mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-28 12:55:05 +00:00

## Summary part of: #15655 I tried generating the source order function using code generation. I tried a simple approach, but it is not enough to generate all of them this way. There is one good thing, that most of the implementations are fine with this. We only have a few that are not. So one benefit of this PR could be it eliminates a lot of the code, hence changing the AST structure will only leave a few places to be fixed. The `source_order` field determines if a node requires a source order implementation. If it’s empty it means source order does not visit anything. Initially I didn’t want to repeat the field names. But I found two things: - `ExprIf` statement unlike other statements does not have the fields defined in source order. This and also some fields do not need to be included in the visit. So we just need a way to determine order, and determine presence. - Relying on the fields sounds more complicated to me. Maybe another solution is to add a new attribute `order` to each field? I'm open to suggestions. But anyway, except for the `ExprIf` we don't need to write the field names in order. Just knowing what fields must be visited are enough. Some nodes had a more complex visitor: `ExprCompare` required zipping two fields. `ExprBoolOp` required a match over the fields. `FstringValue` required a match, I created a new walk_ function that does the match. and used it in code generation. I don’t think this provides real value. Because I mostly moved the code from one file to another. I was tried it as an option. I prefer to leave it in the code as before. Some visitors visit a slice of items. Others visit a single element. I put a check on this in code generation to see if the field requires a for loop or not. I think better approach is to have a consistent style. So we can by default loop over any field that is a sequence. For field types `StringLiteralValue` and `BytesLiteralValue` the types are not a sequence in toml definition. But they implement `iter` so they are iterated over. So the code generation does not properly identify this. So in the code I'm checking for their types. ## Test Plan All the tests should pass without any changes. I checked the generated code to make sure it's the same as old code. I'm not sure if there's a test for the source order visitor.
7984 lines
233 KiB
Rust
Generated
7984 lines
233 KiB
Rust
Generated
// This is a generated file. Don't modify it by hand!
|
|
// Run `crates/ruff_python_ast/generate.py` to re-generate the file.
|
|
|
|
use crate::name::Name;
|
|
use crate::visitor::source_order::SourceOrderVisitor;
|
|
|
|
/// See also [mod](https://docs.python.org/3/library/ast.html#ast.mod)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub enum Mod {
|
|
Module(crate::ModModule),
|
|
Expression(crate::ModExpression),
|
|
}
|
|
|
|
impl From<crate::ModModule> for Mod {
|
|
fn from(node: crate::ModModule) -> Self {
|
|
Self::Module(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ModExpression> for Mod {
|
|
fn from(node: crate::ModExpression) -> Self {
|
|
Self::Expression(node)
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for Mod {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
match self {
|
|
Self::Module(node) => node.range(),
|
|
Self::Expression(node) => node.range(),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[allow(dead_code, clippy::match_wildcard_for_single_variants)]
|
|
impl Mod {
|
|
#[inline]
|
|
pub const fn is_module(&self) -> bool {
|
|
matches!(self, Self::Module(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn module(self) -> Option<crate::ModModule> {
|
|
match self {
|
|
Self::Module(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_module(self) -> crate::ModModule {
|
|
match self {
|
|
Self::Module(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_module_mut(&mut self) -> Option<&mut crate::ModModule> {
|
|
match self {
|
|
Self::Module(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_module(&self) -> Option<&crate::ModModule> {
|
|
match self {
|
|
Self::Module(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_expression(&self) -> bool {
|
|
matches!(self, Self::Expression(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expression(self) -> Option<crate::ModExpression> {
|
|
match self {
|
|
Self::Expression(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_expression(self) -> crate::ModExpression {
|
|
match self {
|
|
Self::Expression(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_expression_mut(&mut self) -> Option<&mut crate::ModExpression> {
|
|
match self {
|
|
Self::Expression(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_expression(&self) -> Option<&crate::ModExpression> {
|
|
match self {
|
|
Self::Expression(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
}
|
|
|
|
/// See also [stmt](https://docs.python.org/3/library/ast.html#ast.stmt)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub enum Stmt {
|
|
FunctionDef(crate::StmtFunctionDef),
|
|
ClassDef(crate::StmtClassDef),
|
|
Return(crate::StmtReturn),
|
|
Delete(crate::StmtDelete),
|
|
TypeAlias(crate::StmtTypeAlias),
|
|
Assign(crate::StmtAssign),
|
|
AugAssign(crate::StmtAugAssign),
|
|
AnnAssign(crate::StmtAnnAssign),
|
|
For(crate::StmtFor),
|
|
While(crate::StmtWhile),
|
|
If(crate::StmtIf),
|
|
With(crate::StmtWith),
|
|
Match(crate::StmtMatch),
|
|
Raise(crate::StmtRaise),
|
|
Try(crate::StmtTry),
|
|
Assert(crate::StmtAssert),
|
|
Import(crate::StmtImport),
|
|
ImportFrom(crate::StmtImportFrom),
|
|
Global(crate::StmtGlobal),
|
|
Nonlocal(crate::StmtNonlocal),
|
|
Expr(crate::StmtExpr),
|
|
Pass(crate::StmtPass),
|
|
Break(crate::StmtBreak),
|
|
Continue(crate::StmtContinue),
|
|
IpyEscapeCommand(crate::StmtIpyEscapeCommand),
|
|
}
|
|
|
|
impl From<crate::StmtFunctionDef> for Stmt {
|
|
fn from(node: crate::StmtFunctionDef) -> Self {
|
|
Self::FunctionDef(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtClassDef> for Stmt {
|
|
fn from(node: crate::StmtClassDef) -> Self {
|
|
Self::ClassDef(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtReturn> for Stmt {
|
|
fn from(node: crate::StmtReturn) -> Self {
|
|
Self::Return(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtDelete> for Stmt {
|
|
fn from(node: crate::StmtDelete) -> Self {
|
|
Self::Delete(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtTypeAlias> for Stmt {
|
|
fn from(node: crate::StmtTypeAlias) -> Self {
|
|
Self::TypeAlias(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtAssign> for Stmt {
|
|
fn from(node: crate::StmtAssign) -> Self {
|
|
Self::Assign(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtAugAssign> for Stmt {
|
|
fn from(node: crate::StmtAugAssign) -> Self {
|
|
Self::AugAssign(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtAnnAssign> for Stmt {
|
|
fn from(node: crate::StmtAnnAssign) -> Self {
|
|
Self::AnnAssign(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtFor> for Stmt {
|
|
fn from(node: crate::StmtFor) -> Self {
|
|
Self::For(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtWhile> for Stmt {
|
|
fn from(node: crate::StmtWhile) -> Self {
|
|
Self::While(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtIf> for Stmt {
|
|
fn from(node: crate::StmtIf) -> Self {
|
|
Self::If(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtWith> for Stmt {
|
|
fn from(node: crate::StmtWith) -> Self {
|
|
Self::With(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtMatch> for Stmt {
|
|
fn from(node: crate::StmtMatch) -> Self {
|
|
Self::Match(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtRaise> for Stmt {
|
|
fn from(node: crate::StmtRaise) -> Self {
|
|
Self::Raise(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtTry> for Stmt {
|
|
fn from(node: crate::StmtTry) -> Self {
|
|
Self::Try(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtAssert> for Stmt {
|
|
fn from(node: crate::StmtAssert) -> Self {
|
|
Self::Assert(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtImport> for Stmt {
|
|
fn from(node: crate::StmtImport) -> Self {
|
|
Self::Import(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtImportFrom> for Stmt {
|
|
fn from(node: crate::StmtImportFrom) -> Self {
|
|
Self::ImportFrom(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtGlobal> for Stmt {
|
|
fn from(node: crate::StmtGlobal) -> Self {
|
|
Self::Global(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtNonlocal> for Stmt {
|
|
fn from(node: crate::StmtNonlocal) -> Self {
|
|
Self::Nonlocal(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtExpr> for Stmt {
|
|
fn from(node: crate::StmtExpr) -> Self {
|
|
Self::Expr(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtPass> for Stmt {
|
|
fn from(node: crate::StmtPass) -> Self {
|
|
Self::Pass(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtBreak> for Stmt {
|
|
fn from(node: crate::StmtBreak) -> Self {
|
|
Self::Break(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtContinue> for Stmt {
|
|
fn from(node: crate::StmtContinue) -> Self {
|
|
Self::Continue(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::StmtIpyEscapeCommand> for Stmt {
|
|
fn from(node: crate::StmtIpyEscapeCommand) -> Self {
|
|
Self::IpyEscapeCommand(node)
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for Stmt {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
match self {
|
|
Self::FunctionDef(node) => node.range(),
|
|
Self::ClassDef(node) => node.range(),
|
|
Self::Return(node) => node.range(),
|
|
Self::Delete(node) => node.range(),
|
|
Self::TypeAlias(node) => node.range(),
|
|
Self::Assign(node) => node.range(),
|
|
Self::AugAssign(node) => node.range(),
|
|
Self::AnnAssign(node) => node.range(),
|
|
Self::For(node) => node.range(),
|
|
Self::While(node) => node.range(),
|
|
Self::If(node) => node.range(),
|
|
Self::With(node) => node.range(),
|
|
Self::Match(node) => node.range(),
|
|
Self::Raise(node) => node.range(),
|
|
Self::Try(node) => node.range(),
|
|
Self::Assert(node) => node.range(),
|
|
Self::Import(node) => node.range(),
|
|
Self::ImportFrom(node) => node.range(),
|
|
Self::Global(node) => node.range(),
|
|
Self::Nonlocal(node) => node.range(),
|
|
Self::Expr(node) => node.range(),
|
|
Self::Pass(node) => node.range(),
|
|
Self::Break(node) => node.range(),
|
|
Self::Continue(node) => node.range(),
|
|
Self::IpyEscapeCommand(node) => node.range(),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[allow(dead_code, clippy::match_wildcard_for_single_variants)]
|
|
impl Stmt {
|
|
#[inline]
|
|
pub const fn is_function_def_stmt(&self) -> bool {
|
|
matches!(self, Self::FunctionDef(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn function_def_stmt(self) -> Option<crate::StmtFunctionDef> {
|
|
match self {
|
|
Self::FunctionDef(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_function_def_stmt(self) -> crate::StmtFunctionDef {
|
|
match self {
|
|
Self::FunctionDef(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_function_def_stmt_mut(&mut self) -> Option<&mut crate::StmtFunctionDef> {
|
|
match self {
|
|
Self::FunctionDef(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_function_def_stmt(&self) -> Option<&crate::StmtFunctionDef> {
|
|
match self {
|
|
Self::FunctionDef(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_class_def_stmt(&self) -> bool {
|
|
matches!(self, Self::ClassDef(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn class_def_stmt(self) -> Option<crate::StmtClassDef> {
|
|
match self {
|
|
Self::ClassDef(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_class_def_stmt(self) -> crate::StmtClassDef {
|
|
match self {
|
|
Self::ClassDef(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_class_def_stmt_mut(&mut self) -> Option<&mut crate::StmtClassDef> {
|
|
match self {
|
|
Self::ClassDef(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_class_def_stmt(&self) -> Option<&crate::StmtClassDef> {
|
|
match self {
|
|
Self::ClassDef(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_return_stmt(&self) -> bool {
|
|
matches!(self, Self::Return(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn return_stmt(self) -> Option<crate::StmtReturn> {
|
|
match self {
|
|
Self::Return(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_return_stmt(self) -> crate::StmtReturn {
|
|
match self {
|
|
Self::Return(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_return_stmt_mut(&mut self) -> Option<&mut crate::StmtReturn> {
|
|
match self {
|
|
Self::Return(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_return_stmt(&self) -> Option<&crate::StmtReturn> {
|
|
match self {
|
|
Self::Return(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_delete_stmt(&self) -> bool {
|
|
matches!(self, Self::Delete(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn delete_stmt(self) -> Option<crate::StmtDelete> {
|
|
match self {
|
|
Self::Delete(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_delete_stmt(self) -> crate::StmtDelete {
|
|
match self {
|
|
Self::Delete(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_delete_stmt_mut(&mut self) -> Option<&mut crate::StmtDelete> {
|
|
match self {
|
|
Self::Delete(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_delete_stmt(&self) -> Option<&crate::StmtDelete> {
|
|
match self {
|
|
Self::Delete(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_type_alias_stmt(&self) -> bool {
|
|
matches!(self, Self::TypeAlias(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn type_alias_stmt(self) -> Option<crate::StmtTypeAlias> {
|
|
match self {
|
|
Self::TypeAlias(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_type_alias_stmt(self) -> crate::StmtTypeAlias {
|
|
match self {
|
|
Self::TypeAlias(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_type_alias_stmt_mut(&mut self) -> Option<&mut crate::StmtTypeAlias> {
|
|
match self {
|
|
Self::TypeAlias(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_type_alias_stmt(&self) -> Option<&crate::StmtTypeAlias> {
|
|
match self {
|
|
Self::TypeAlias(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_assign_stmt(&self) -> bool {
|
|
matches!(self, Self::Assign(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn assign_stmt(self) -> Option<crate::StmtAssign> {
|
|
match self {
|
|
Self::Assign(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_assign_stmt(self) -> crate::StmtAssign {
|
|
match self {
|
|
Self::Assign(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_assign_stmt_mut(&mut self) -> Option<&mut crate::StmtAssign> {
|
|
match self {
|
|
Self::Assign(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_assign_stmt(&self) -> Option<&crate::StmtAssign> {
|
|
match self {
|
|
Self::Assign(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_aug_assign_stmt(&self) -> bool {
|
|
matches!(self, Self::AugAssign(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn aug_assign_stmt(self) -> Option<crate::StmtAugAssign> {
|
|
match self {
|
|
Self::AugAssign(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_aug_assign_stmt(self) -> crate::StmtAugAssign {
|
|
match self {
|
|
Self::AugAssign(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_aug_assign_stmt_mut(&mut self) -> Option<&mut crate::StmtAugAssign> {
|
|
match self {
|
|
Self::AugAssign(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_aug_assign_stmt(&self) -> Option<&crate::StmtAugAssign> {
|
|
match self {
|
|
Self::AugAssign(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_ann_assign_stmt(&self) -> bool {
|
|
matches!(self, Self::AnnAssign(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn ann_assign_stmt(self) -> Option<crate::StmtAnnAssign> {
|
|
match self {
|
|
Self::AnnAssign(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_ann_assign_stmt(self) -> crate::StmtAnnAssign {
|
|
match self {
|
|
Self::AnnAssign(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_ann_assign_stmt_mut(&mut self) -> Option<&mut crate::StmtAnnAssign> {
|
|
match self {
|
|
Self::AnnAssign(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_ann_assign_stmt(&self) -> Option<&crate::StmtAnnAssign> {
|
|
match self {
|
|
Self::AnnAssign(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_for_stmt(&self) -> bool {
|
|
matches!(self, Self::For(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn for_stmt(self) -> Option<crate::StmtFor> {
|
|
match self {
|
|
Self::For(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_for_stmt(self) -> crate::StmtFor {
|
|
match self {
|
|
Self::For(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_for_stmt_mut(&mut self) -> Option<&mut crate::StmtFor> {
|
|
match self {
|
|
Self::For(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_for_stmt(&self) -> Option<&crate::StmtFor> {
|
|
match self {
|
|
Self::For(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_while_stmt(&self) -> bool {
|
|
matches!(self, Self::While(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn while_stmt(self) -> Option<crate::StmtWhile> {
|
|
match self {
|
|
Self::While(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_while_stmt(self) -> crate::StmtWhile {
|
|
match self {
|
|
Self::While(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_while_stmt_mut(&mut self) -> Option<&mut crate::StmtWhile> {
|
|
match self {
|
|
Self::While(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_while_stmt(&self) -> Option<&crate::StmtWhile> {
|
|
match self {
|
|
Self::While(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_if_stmt(&self) -> bool {
|
|
matches!(self, Self::If(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn if_stmt(self) -> Option<crate::StmtIf> {
|
|
match self {
|
|
Self::If(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_if_stmt(self) -> crate::StmtIf {
|
|
match self {
|
|
Self::If(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_if_stmt_mut(&mut self) -> Option<&mut crate::StmtIf> {
|
|
match self {
|
|
Self::If(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_if_stmt(&self) -> Option<&crate::StmtIf> {
|
|
match self {
|
|
Self::If(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_with_stmt(&self) -> bool {
|
|
matches!(self, Self::With(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn with_stmt(self) -> Option<crate::StmtWith> {
|
|
match self {
|
|
Self::With(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_with_stmt(self) -> crate::StmtWith {
|
|
match self {
|
|
Self::With(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_with_stmt_mut(&mut self) -> Option<&mut crate::StmtWith> {
|
|
match self {
|
|
Self::With(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_with_stmt(&self) -> Option<&crate::StmtWith> {
|
|
match self {
|
|
Self::With(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_match_stmt(&self) -> bool {
|
|
matches!(self, Self::Match(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn match_stmt(self) -> Option<crate::StmtMatch> {
|
|
match self {
|
|
Self::Match(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_match_stmt(self) -> crate::StmtMatch {
|
|
match self {
|
|
Self::Match(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_match_stmt_mut(&mut self) -> Option<&mut crate::StmtMatch> {
|
|
match self {
|
|
Self::Match(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_match_stmt(&self) -> Option<&crate::StmtMatch> {
|
|
match self {
|
|
Self::Match(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_raise_stmt(&self) -> bool {
|
|
matches!(self, Self::Raise(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn raise_stmt(self) -> Option<crate::StmtRaise> {
|
|
match self {
|
|
Self::Raise(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_raise_stmt(self) -> crate::StmtRaise {
|
|
match self {
|
|
Self::Raise(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_raise_stmt_mut(&mut self) -> Option<&mut crate::StmtRaise> {
|
|
match self {
|
|
Self::Raise(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_raise_stmt(&self) -> Option<&crate::StmtRaise> {
|
|
match self {
|
|
Self::Raise(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_try_stmt(&self) -> bool {
|
|
matches!(self, Self::Try(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn try_stmt(self) -> Option<crate::StmtTry> {
|
|
match self {
|
|
Self::Try(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_try_stmt(self) -> crate::StmtTry {
|
|
match self {
|
|
Self::Try(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_try_stmt_mut(&mut self) -> Option<&mut crate::StmtTry> {
|
|
match self {
|
|
Self::Try(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_try_stmt(&self) -> Option<&crate::StmtTry> {
|
|
match self {
|
|
Self::Try(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_assert_stmt(&self) -> bool {
|
|
matches!(self, Self::Assert(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn assert_stmt(self) -> Option<crate::StmtAssert> {
|
|
match self {
|
|
Self::Assert(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_assert_stmt(self) -> crate::StmtAssert {
|
|
match self {
|
|
Self::Assert(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_assert_stmt_mut(&mut self) -> Option<&mut crate::StmtAssert> {
|
|
match self {
|
|
Self::Assert(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_assert_stmt(&self) -> Option<&crate::StmtAssert> {
|
|
match self {
|
|
Self::Assert(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_import_stmt(&self) -> bool {
|
|
matches!(self, Self::Import(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn import_stmt(self) -> Option<crate::StmtImport> {
|
|
match self {
|
|
Self::Import(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_import_stmt(self) -> crate::StmtImport {
|
|
match self {
|
|
Self::Import(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_import_stmt_mut(&mut self) -> Option<&mut crate::StmtImport> {
|
|
match self {
|
|
Self::Import(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_import_stmt(&self) -> Option<&crate::StmtImport> {
|
|
match self {
|
|
Self::Import(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_import_from_stmt(&self) -> bool {
|
|
matches!(self, Self::ImportFrom(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn import_from_stmt(self) -> Option<crate::StmtImportFrom> {
|
|
match self {
|
|
Self::ImportFrom(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_import_from_stmt(self) -> crate::StmtImportFrom {
|
|
match self {
|
|
Self::ImportFrom(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_import_from_stmt_mut(&mut self) -> Option<&mut crate::StmtImportFrom> {
|
|
match self {
|
|
Self::ImportFrom(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_import_from_stmt(&self) -> Option<&crate::StmtImportFrom> {
|
|
match self {
|
|
Self::ImportFrom(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_global_stmt(&self) -> bool {
|
|
matches!(self, Self::Global(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn global_stmt(self) -> Option<crate::StmtGlobal> {
|
|
match self {
|
|
Self::Global(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_global_stmt(self) -> crate::StmtGlobal {
|
|
match self {
|
|
Self::Global(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_global_stmt_mut(&mut self) -> Option<&mut crate::StmtGlobal> {
|
|
match self {
|
|
Self::Global(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_global_stmt(&self) -> Option<&crate::StmtGlobal> {
|
|
match self {
|
|
Self::Global(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_nonlocal_stmt(&self) -> bool {
|
|
matches!(self, Self::Nonlocal(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn nonlocal_stmt(self) -> Option<crate::StmtNonlocal> {
|
|
match self {
|
|
Self::Nonlocal(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_nonlocal_stmt(self) -> crate::StmtNonlocal {
|
|
match self {
|
|
Self::Nonlocal(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_nonlocal_stmt_mut(&mut self) -> Option<&mut crate::StmtNonlocal> {
|
|
match self {
|
|
Self::Nonlocal(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_nonlocal_stmt(&self) -> Option<&crate::StmtNonlocal> {
|
|
match self {
|
|
Self::Nonlocal(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_expr_stmt(&self) -> bool {
|
|
matches!(self, Self::Expr(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expr_stmt(self) -> Option<crate::StmtExpr> {
|
|
match self {
|
|
Self::Expr(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_expr_stmt(self) -> crate::StmtExpr {
|
|
match self {
|
|
Self::Expr(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_expr_stmt_mut(&mut self) -> Option<&mut crate::StmtExpr> {
|
|
match self {
|
|
Self::Expr(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_expr_stmt(&self) -> Option<&crate::StmtExpr> {
|
|
match self {
|
|
Self::Expr(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_pass_stmt(&self) -> bool {
|
|
matches!(self, Self::Pass(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn pass_stmt(self) -> Option<crate::StmtPass> {
|
|
match self {
|
|
Self::Pass(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_pass_stmt(self) -> crate::StmtPass {
|
|
match self {
|
|
Self::Pass(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_pass_stmt_mut(&mut self) -> Option<&mut crate::StmtPass> {
|
|
match self {
|
|
Self::Pass(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_pass_stmt(&self) -> Option<&crate::StmtPass> {
|
|
match self {
|
|
Self::Pass(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_break_stmt(&self) -> bool {
|
|
matches!(self, Self::Break(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn break_stmt(self) -> Option<crate::StmtBreak> {
|
|
match self {
|
|
Self::Break(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_break_stmt(self) -> crate::StmtBreak {
|
|
match self {
|
|
Self::Break(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_break_stmt_mut(&mut self) -> Option<&mut crate::StmtBreak> {
|
|
match self {
|
|
Self::Break(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_break_stmt(&self) -> Option<&crate::StmtBreak> {
|
|
match self {
|
|
Self::Break(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_continue_stmt(&self) -> bool {
|
|
matches!(self, Self::Continue(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn continue_stmt(self) -> Option<crate::StmtContinue> {
|
|
match self {
|
|
Self::Continue(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_continue_stmt(self) -> crate::StmtContinue {
|
|
match self {
|
|
Self::Continue(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_continue_stmt_mut(&mut self) -> Option<&mut crate::StmtContinue> {
|
|
match self {
|
|
Self::Continue(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_continue_stmt(&self) -> Option<&crate::StmtContinue> {
|
|
match self {
|
|
Self::Continue(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_ipy_escape_command_stmt(&self) -> bool {
|
|
matches!(self, Self::IpyEscapeCommand(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn ipy_escape_command_stmt(self) -> Option<crate::StmtIpyEscapeCommand> {
|
|
match self {
|
|
Self::IpyEscapeCommand(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_ipy_escape_command_stmt(self) -> crate::StmtIpyEscapeCommand {
|
|
match self {
|
|
Self::IpyEscapeCommand(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_ipy_escape_command_stmt_mut(&mut self) -> Option<&mut crate::StmtIpyEscapeCommand> {
|
|
match self {
|
|
Self::IpyEscapeCommand(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_ipy_escape_command_stmt(&self) -> Option<&crate::StmtIpyEscapeCommand> {
|
|
match self {
|
|
Self::IpyEscapeCommand(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
}
|
|
|
|
/// See also [expr](https://docs.python.org/3/library/ast.html#ast.expr)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub enum Expr {
|
|
BoolOp(crate::ExprBoolOp),
|
|
Named(crate::ExprNamed),
|
|
BinOp(crate::ExprBinOp),
|
|
UnaryOp(crate::ExprUnaryOp),
|
|
Lambda(crate::ExprLambda),
|
|
If(crate::ExprIf),
|
|
Dict(crate::ExprDict),
|
|
Set(crate::ExprSet),
|
|
ListComp(crate::ExprListComp),
|
|
SetComp(crate::ExprSetComp),
|
|
DictComp(crate::ExprDictComp),
|
|
Generator(crate::ExprGenerator),
|
|
Await(crate::ExprAwait),
|
|
Yield(crate::ExprYield),
|
|
YieldFrom(crate::ExprYieldFrom),
|
|
Compare(crate::ExprCompare),
|
|
Call(crate::ExprCall),
|
|
FString(crate::ExprFString),
|
|
StringLiteral(crate::ExprStringLiteral),
|
|
BytesLiteral(crate::ExprBytesLiteral),
|
|
NumberLiteral(crate::ExprNumberLiteral),
|
|
BooleanLiteral(crate::ExprBooleanLiteral),
|
|
NoneLiteral(crate::ExprNoneLiteral),
|
|
EllipsisLiteral(crate::ExprEllipsisLiteral),
|
|
Attribute(crate::ExprAttribute),
|
|
Subscript(crate::ExprSubscript),
|
|
Starred(crate::ExprStarred),
|
|
Name(crate::ExprName),
|
|
List(crate::ExprList),
|
|
Tuple(crate::ExprTuple),
|
|
Slice(crate::ExprSlice),
|
|
IpyEscapeCommand(crate::ExprIpyEscapeCommand),
|
|
}
|
|
|
|
impl From<crate::ExprBoolOp> for Expr {
|
|
fn from(node: crate::ExprBoolOp) -> Self {
|
|
Self::BoolOp(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprNamed> for Expr {
|
|
fn from(node: crate::ExprNamed) -> Self {
|
|
Self::Named(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprBinOp> for Expr {
|
|
fn from(node: crate::ExprBinOp) -> Self {
|
|
Self::BinOp(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprUnaryOp> for Expr {
|
|
fn from(node: crate::ExprUnaryOp) -> Self {
|
|
Self::UnaryOp(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprLambda> for Expr {
|
|
fn from(node: crate::ExprLambda) -> Self {
|
|
Self::Lambda(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprIf> for Expr {
|
|
fn from(node: crate::ExprIf) -> Self {
|
|
Self::If(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprDict> for Expr {
|
|
fn from(node: crate::ExprDict) -> Self {
|
|
Self::Dict(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprSet> for Expr {
|
|
fn from(node: crate::ExprSet) -> Self {
|
|
Self::Set(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprListComp> for Expr {
|
|
fn from(node: crate::ExprListComp) -> Self {
|
|
Self::ListComp(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprSetComp> for Expr {
|
|
fn from(node: crate::ExprSetComp) -> Self {
|
|
Self::SetComp(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprDictComp> for Expr {
|
|
fn from(node: crate::ExprDictComp) -> Self {
|
|
Self::DictComp(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprGenerator> for Expr {
|
|
fn from(node: crate::ExprGenerator) -> Self {
|
|
Self::Generator(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprAwait> for Expr {
|
|
fn from(node: crate::ExprAwait) -> Self {
|
|
Self::Await(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprYield> for Expr {
|
|
fn from(node: crate::ExprYield) -> Self {
|
|
Self::Yield(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprYieldFrom> for Expr {
|
|
fn from(node: crate::ExprYieldFrom) -> Self {
|
|
Self::YieldFrom(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprCompare> for Expr {
|
|
fn from(node: crate::ExprCompare) -> Self {
|
|
Self::Compare(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprCall> for Expr {
|
|
fn from(node: crate::ExprCall) -> Self {
|
|
Self::Call(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprFString> for Expr {
|
|
fn from(node: crate::ExprFString) -> Self {
|
|
Self::FString(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprStringLiteral> for Expr {
|
|
fn from(node: crate::ExprStringLiteral) -> Self {
|
|
Self::StringLiteral(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprBytesLiteral> for Expr {
|
|
fn from(node: crate::ExprBytesLiteral) -> Self {
|
|
Self::BytesLiteral(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprNumberLiteral> for Expr {
|
|
fn from(node: crate::ExprNumberLiteral) -> Self {
|
|
Self::NumberLiteral(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprBooleanLiteral> for Expr {
|
|
fn from(node: crate::ExprBooleanLiteral) -> Self {
|
|
Self::BooleanLiteral(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprNoneLiteral> for Expr {
|
|
fn from(node: crate::ExprNoneLiteral) -> Self {
|
|
Self::NoneLiteral(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprEllipsisLiteral> for Expr {
|
|
fn from(node: crate::ExprEllipsisLiteral) -> Self {
|
|
Self::EllipsisLiteral(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprAttribute> for Expr {
|
|
fn from(node: crate::ExprAttribute) -> Self {
|
|
Self::Attribute(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprSubscript> for Expr {
|
|
fn from(node: crate::ExprSubscript) -> Self {
|
|
Self::Subscript(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprStarred> for Expr {
|
|
fn from(node: crate::ExprStarred) -> Self {
|
|
Self::Starred(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprName> for Expr {
|
|
fn from(node: crate::ExprName) -> Self {
|
|
Self::Name(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprList> for Expr {
|
|
fn from(node: crate::ExprList) -> Self {
|
|
Self::List(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprTuple> for Expr {
|
|
fn from(node: crate::ExprTuple) -> Self {
|
|
Self::Tuple(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprSlice> for Expr {
|
|
fn from(node: crate::ExprSlice) -> Self {
|
|
Self::Slice(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::ExprIpyEscapeCommand> for Expr {
|
|
fn from(node: crate::ExprIpyEscapeCommand) -> Self {
|
|
Self::IpyEscapeCommand(node)
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for Expr {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
match self {
|
|
Self::BoolOp(node) => node.range(),
|
|
Self::Named(node) => node.range(),
|
|
Self::BinOp(node) => node.range(),
|
|
Self::UnaryOp(node) => node.range(),
|
|
Self::Lambda(node) => node.range(),
|
|
Self::If(node) => node.range(),
|
|
Self::Dict(node) => node.range(),
|
|
Self::Set(node) => node.range(),
|
|
Self::ListComp(node) => node.range(),
|
|
Self::SetComp(node) => node.range(),
|
|
Self::DictComp(node) => node.range(),
|
|
Self::Generator(node) => node.range(),
|
|
Self::Await(node) => node.range(),
|
|
Self::Yield(node) => node.range(),
|
|
Self::YieldFrom(node) => node.range(),
|
|
Self::Compare(node) => node.range(),
|
|
Self::Call(node) => node.range(),
|
|
Self::FString(node) => node.range(),
|
|
Self::StringLiteral(node) => node.range(),
|
|
Self::BytesLiteral(node) => node.range(),
|
|
Self::NumberLiteral(node) => node.range(),
|
|
Self::BooleanLiteral(node) => node.range(),
|
|
Self::NoneLiteral(node) => node.range(),
|
|
Self::EllipsisLiteral(node) => node.range(),
|
|
Self::Attribute(node) => node.range(),
|
|
Self::Subscript(node) => node.range(),
|
|
Self::Starred(node) => node.range(),
|
|
Self::Name(node) => node.range(),
|
|
Self::List(node) => node.range(),
|
|
Self::Tuple(node) => node.range(),
|
|
Self::Slice(node) => node.range(),
|
|
Self::IpyEscapeCommand(node) => node.range(),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[allow(dead_code, clippy::match_wildcard_for_single_variants)]
|
|
impl Expr {
|
|
#[inline]
|
|
pub const fn is_bool_op_expr(&self) -> bool {
|
|
matches!(self, Self::BoolOp(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn bool_op_expr(self) -> Option<crate::ExprBoolOp> {
|
|
match self {
|
|
Self::BoolOp(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_bool_op_expr(self) -> crate::ExprBoolOp {
|
|
match self {
|
|
Self::BoolOp(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_bool_op_expr_mut(&mut self) -> Option<&mut crate::ExprBoolOp> {
|
|
match self {
|
|
Self::BoolOp(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_bool_op_expr(&self) -> Option<&crate::ExprBoolOp> {
|
|
match self {
|
|
Self::BoolOp(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_named_expr(&self) -> bool {
|
|
matches!(self, Self::Named(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn named_expr(self) -> Option<crate::ExprNamed> {
|
|
match self {
|
|
Self::Named(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_named_expr(self) -> crate::ExprNamed {
|
|
match self {
|
|
Self::Named(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_named_expr_mut(&mut self) -> Option<&mut crate::ExprNamed> {
|
|
match self {
|
|
Self::Named(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_named_expr(&self) -> Option<&crate::ExprNamed> {
|
|
match self {
|
|
Self::Named(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_bin_op_expr(&self) -> bool {
|
|
matches!(self, Self::BinOp(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn bin_op_expr(self) -> Option<crate::ExprBinOp> {
|
|
match self {
|
|
Self::BinOp(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_bin_op_expr(self) -> crate::ExprBinOp {
|
|
match self {
|
|
Self::BinOp(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_bin_op_expr_mut(&mut self) -> Option<&mut crate::ExprBinOp> {
|
|
match self {
|
|
Self::BinOp(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_bin_op_expr(&self) -> Option<&crate::ExprBinOp> {
|
|
match self {
|
|
Self::BinOp(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_unary_op_expr(&self) -> bool {
|
|
matches!(self, Self::UnaryOp(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn unary_op_expr(self) -> Option<crate::ExprUnaryOp> {
|
|
match self {
|
|
Self::UnaryOp(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_unary_op_expr(self) -> crate::ExprUnaryOp {
|
|
match self {
|
|
Self::UnaryOp(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_unary_op_expr_mut(&mut self) -> Option<&mut crate::ExprUnaryOp> {
|
|
match self {
|
|
Self::UnaryOp(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_unary_op_expr(&self) -> Option<&crate::ExprUnaryOp> {
|
|
match self {
|
|
Self::UnaryOp(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_lambda_expr(&self) -> bool {
|
|
matches!(self, Self::Lambda(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn lambda_expr(self) -> Option<crate::ExprLambda> {
|
|
match self {
|
|
Self::Lambda(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_lambda_expr(self) -> crate::ExprLambda {
|
|
match self {
|
|
Self::Lambda(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_lambda_expr_mut(&mut self) -> Option<&mut crate::ExprLambda> {
|
|
match self {
|
|
Self::Lambda(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_lambda_expr(&self) -> Option<&crate::ExprLambda> {
|
|
match self {
|
|
Self::Lambda(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_if_expr(&self) -> bool {
|
|
matches!(self, Self::If(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn if_expr(self) -> Option<crate::ExprIf> {
|
|
match self {
|
|
Self::If(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_if_expr(self) -> crate::ExprIf {
|
|
match self {
|
|
Self::If(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_if_expr_mut(&mut self) -> Option<&mut crate::ExprIf> {
|
|
match self {
|
|
Self::If(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_if_expr(&self) -> Option<&crate::ExprIf> {
|
|
match self {
|
|
Self::If(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_dict_expr(&self) -> bool {
|
|
matches!(self, Self::Dict(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn dict_expr(self) -> Option<crate::ExprDict> {
|
|
match self {
|
|
Self::Dict(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_dict_expr(self) -> crate::ExprDict {
|
|
match self {
|
|
Self::Dict(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_dict_expr_mut(&mut self) -> Option<&mut crate::ExprDict> {
|
|
match self {
|
|
Self::Dict(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_dict_expr(&self) -> Option<&crate::ExprDict> {
|
|
match self {
|
|
Self::Dict(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_set_expr(&self) -> bool {
|
|
matches!(self, Self::Set(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn set_expr(self) -> Option<crate::ExprSet> {
|
|
match self {
|
|
Self::Set(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_set_expr(self) -> crate::ExprSet {
|
|
match self {
|
|
Self::Set(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_set_expr_mut(&mut self) -> Option<&mut crate::ExprSet> {
|
|
match self {
|
|
Self::Set(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_set_expr(&self) -> Option<&crate::ExprSet> {
|
|
match self {
|
|
Self::Set(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_list_comp_expr(&self) -> bool {
|
|
matches!(self, Self::ListComp(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn list_comp_expr(self) -> Option<crate::ExprListComp> {
|
|
match self {
|
|
Self::ListComp(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_list_comp_expr(self) -> crate::ExprListComp {
|
|
match self {
|
|
Self::ListComp(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_list_comp_expr_mut(&mut self) -> Option<&mut crate::ExprListComp> {
|
|
match self {
|
|
Self::ListComp(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_list_comp_expr(&self) -> Option<&crate::ExprListComp> {
|
|
match self {
|
|
Self::ListComp(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_set_comp_expr(&self) -> bool {
|
|
matches!(self, Self::SetComp(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn set_comp_expr(self) -> Option<crate::ExprSetComp> {
|
|
match self {
|
|
Self::SetComp(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_set_comp_expr(self) -> crate::ExprSetComp {
|
|
match self {
|
|
Self::SetComp(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_set_comp_expr_mut(&mut self) -> Option<&mut crate::ExprSetComp> {
|
|
match self {
|
|
Self::SetComp(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_set_comp_expr(&self) -> Option<&crate::ExprSetComp> {
|
|
match self {
|
|
Self::SetComp(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_dict_comp_expr(&self) -> bool {
|
|
matches!(self, Self::DictComp(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn dict_comp_expr(self) -> Option<crate::ExprDictComp> {
|
|
match self {
|
|
Self::DictComp(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_dict_comp_expr(self) -> crate::ExprDictComp {
|
|
match self {
|
|
Self::DictComp(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_dict_comp_expr_mut(&mut self) -> Option<&mut crate::ExprDictComp> {
|
|
match self {
|
|
Self::DictComp(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_dict_comp_expr(&self) -> Option<&crate::ExprDictComp> {
|
|
match self {
|
|
Self::DictComp(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_generator_expr(&self) -> bool {
|
|
matches!(self, Self::Generator(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn generator_expr(self) -> Option<crate::ExprGenerator> {
|
|
match self {
|
|
Self::Generator(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_generator_expr(self) -> crate::ExprGenerator {
|
|
match self {
|
|
Self::Generator(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_generator_expr_mut(&mut self) -> Option<&mut crate::ExprGenerator> {
|
|
match self {
|
|
Self::Generator(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_generator_expr(&self) -> Option<&crate::ExprGenerator> {
|
|
match self {
|
|
Self::Generator(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_await_expr(&self) -> bool {
|
|
matches!(self, Self::Await(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn await_expr(self) -> Option<crate::ExprAwait> {
|
|
match self {
|
|
Self::Await(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_await_expr(self) -> crate::ExprAwait {
|
|
match self {
|
|
Self::Await(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_await_expr_mut(&mut self) -> Option<&mut crate::ExprAwait> {
|
|
match self {
|
|
Self::Await(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_await_expr(&self) -> Option<&crate::ExprAwait> {
|
|
match self {
|
|
Self::Await(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_yield_expr(&self) -> bool {
|
|
matches!(self, Self::Yield(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn yield_expr(self) -> Option<crate::ExprYield> {
|
|
match self {
|
|
Self::Yield(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_yield_expr(self) -> crate::ExprYield {
|
|
match self {
|
|
Self::Yield(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_yield_expr_mut(&mut self) -> Option<&mut crate::ExprYield> {
|
|
match self {
|
|
Self::Yield(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_yield_expr(&self) -> Option<&crate::ExprYield> {
|
|
match self {
|
|
Self::Yield(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_yield_from_expr(&self) -> bool {
|
|
matches!(self, Self::YieldFrom(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn yield_from_expr(self) -> Option<crate::ExprYieldFrom> {
|
|
match self {
|
|
Self::YieldFrom(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_yield_from_expr(self) -> crate::ExprYieldFrom {
|
|
match self {
|
|
Self::YieldFrom(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_yield_from_expr_mut(&mut self) -> Option<&mut crate::ExprYieldFrom> {
|
|
match self {
|
|
Self::YieldFrom(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_yield_from_expr(&self) -> Option<&crate::ExprYieldFrom> {
|
|
match self {
|
|
Self::YieldFrom(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_compare_expr(&self) -> bool {
|
|
matches!(self, Self::Compare(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn compare_expr(self) -> Option<crate::ExprCompare> {
|
|
match self {
|
|
Self::Compare(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_compare_expr(self) -> crate::ExprCompare {
|
|
match self {
|
|
Self::Compare(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_compare_expr_mut(&mut self) -> Option<&mut crate::ExprCompare> {
|
|
match self {
|
|
Self::Compare(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_compare_expr(&self) -> Option<&crate::ExprCompare> {
|
|
match self {
|
|
Self::Compare(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_call_expr(&self) -> bool {
|
|
matches!(self, Self::Call(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn call_expr(self) -> Option<crate::ExprCall> {
|
|
match self {
|
|
Self::Call(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_call_expr(self) -> crate::ExprCall {
|
|
match self {
|
|
Self::Call(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_call_expr_mut(&mut self) -> Option<&mut crate::ExprCall> {
|
|
match self {
|
|
Self::Call(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_call_expr(&self) -> Option<&crate::ExprCall> {
|
|
match self {
|
|
Self::Call(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_f_string_expr(&self) -> bool {
|
|
matches!(self, Self::FString(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn f_string_expr(self) -> Option<crate::ExprFString> {
|
|
match self {
|
|
Self::FString(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_f_string_expr(self) -> crate::ExprFString {
|
|
match self {
|
|
Self::FString(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_f_string_expr_mut(&mut self) -> Option<&mut crate::ExprFString> {
|
|
match self {
|
|
Self::FString(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_f_string_expr(&self) -> Option<&crate::ExprFString> {
|
|
match self {
|
|
Self::FString(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_string_literal_expr(&self) -> bool {
|
|
matches!(self, Self::StringLiteral(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn string_literal_expr(self) -> Option<crate::ExprStringLiteral> {
|
|
match self {
|
|
Self::StringLiteral(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_string_literal_expr(self) -> crate::ExprStringLiteral {
|
|
match self {
|
|
Self::StringLiteral(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_string_literal_expr_mut(&mut self) -> Option<&mut crate::ExprStringLiteral> {
|
|
match self {
|
|
Self::StringLiteral(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_string_literal_expr(&self) -> Option<&crate::ExprStringLiteral> {
|
|
match self {
|
|
Self::StringLiteral(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_bytes_literal_expr(&self) -> bool {
|
|
matches!(self, Self::BytesLiteral(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn bytes_literal_expr(self) -> Option<crate::ExprBytesLiteral> {
|
|
match self {
|
|
Self::BytesLiteral(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_bytes_literal_expr(self) -> crate::ExprBytesLiteral {
|
|
match self {
|
|
Self::BytesLiteral(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_bytes_literal_expr_mut(&mut self) -> Option<&mut crate::ExprBytesLiteral> {
|
|
match self {
|
|
Self::BytesLiteral(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_bytes_literal_expr(&self) -> Option<&crate::ExprBytesLiteral> {
|
|
match self {
|
|
Self::BytesLiteral(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_number_literal_expr(&self) -> bool {
|
|
matches!(self, Self::NumberLiteral(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn number_literal_expr(self) -> Option<crate::ExprNumberLiteral> {
|
|
match self {
|
|
Self::NumberLiteral(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_number_literal_expr(self) -> crate::ExprNumberLiteral {
|
|
match self {
|
|
Self::NumberLiteral(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_number_literal_expr_mut(&mut self) -> Option<&mut crate::ExprNumberLiteral> {
|
|
match self {
|
|
Self::NumberLiteral(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_number_literal_expr(&self) -> Option<&crate::ExprNumberLiteral> {
|
|
match self {
|
|
Self::NumberLiteral(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_boolean_literal_expr(&self) -> bool {
|
|
matches!(self, Self::BooleanLiteral(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn boolean_literal_expr(self) -> Option<crate::ExprBooleanLiteral> {
|
|
match self {
|
|
Self::BooleanLiteral(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_boolean_literal_expr(self) -> crate::ExprBooleanLiteral {
|
|
match self {
|
|
Self::BooleanLiteral(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_boolean_literal_expr_mut(&mut self) -> Option<&mut crate::ExprBooleanLiteral> {
|
|
match self {
|
|
Self::BooleanLiteral(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_boolean_literal_expr(&self) -> Option<&crate::ExprBooleanLiteral> {
|
|
match self {
|
|
Self::BooleanLiteral(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_none_literal_expr(&self) -> bool {
|
|
matches!(self, Self::NoneLiteral(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn none_literal_expr(self) -> Option<crate::ExprNoneLiteral> {
|
|
match self {
|
|
Self::NoneLiteral(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_none_literal_expr(self) -> crate::ExprNoneLiteral {
|
|
match self {
|
|
Self::NoneLiteral(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_none_literal_expr_mut(&mut self) -> Option<&mut crate::ExprNoneLiteral> {
|
|
match self {
|
|
Self::NoneLiteral(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_none_literal_expr(&self) -> Option<&crate::ExprNoneLiteral> {
|
|
match self {
|
|
Self::NoneLiteral(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_ellipsis_literal_expr(&self) -> bool {
|
|
matches!(self, Self::EllipsisLiteral(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn ellipsis_literal_expr(self) -> Option<crate::ExprEllipsisLiteral> {
|
|
match self {
|
|
Self::EllipsisLiteral(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_ellipsis_literal_expr(self) -> crate::ExprEllipsisLiteral {
|
|
match self {
|
|
Self::EllipsisLiteral(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_ellipsis_literal_expr_mut(&mut self) -> Option<&mut crate::ExprEllipsisLiteral> {
|
|
match self {
|
|
Self::EllipsisLiteral(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_ellipsis_literal_expr(&self) -> Option<&crate::ExprEllipsisLiteral> {
|
|
match self {
|
|
Self::EllipsisLiteral(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_attribute_expr(&self) -> bool {
|
|
matches!(self, Self::Attribute(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn attribute_expr(self) -> Option<crate::ExprAttribute> {
|
|
match self {
|
|
Self::Attribute(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_attribute_expr(self) -> crate::ExprAttribute {
|
|
match self {
|
|
Self::Attribute(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_attribute_expr_mut(&mut self) -> Option<&mut crate::ExprAttribute> {
|
|
match self {
|
|
Self::Attribute(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_attribute_expr(&self) -> Option<&crate::ExprAttribute> {
|
|
match self {
|
|
Self::Attribute(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_subscript_expr(&self) -> bool {
|
|
matches!(self, Self::Subscript(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn subscript_expr(self) -> Option<crate::ExprSubscript> {
|
|
match self {
|
|
Self::Subscript(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_subscript_expr(self) -> crate::ExprSubscript {
|
|
match self {
|
|
Self::Subscript(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_subscript_expr_mut(&mut self) -> Option<&mut crate::ExprSubscript> {
|
|
match self {
|
|
Self::Subscript(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_subscript_expr(&self) -> Option<&crate::ExprSubscript> {
|
|
match self {
|
|
Self::Subscript(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_starred_expr(&self) -> bool {
|
|
matches!(self, Self::Starred(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn starred_expr(self) -> Option<crate::ExprStarred> {
|
|
match self {
|
|
Self::Starred(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_starred_expr(self) -> crate::ExprStarred {
|
|
match self {
|
|
Self::Starred(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_starred_expr_mut(&mut self) -> Option<&mut crate::ExprStarred> {
|
|
match self {
|
|
Self::Starred(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_starred_expr(&self) -> Option<&crate::ExprStarred> {
|
|
match self {
|
|
Self::Starred(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_name_expr(&self) -> bool {
|
|
matches!(self, Self::Name(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn name_expr(self) -> Option<crate::ExprName> {
|
|
match self {
|
|
Self::Name(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_name_expr(self) -> crate::ExprName {
|
|
match self {
|
|
Self::Name(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_name_expr_mut(&mut self) -> Option<&mut crate::ExprName> {
|
|
match self {
|
|
Self::Name(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_name_expr(&self) -> Option<&crate::ExprName> {
|
|
match self {
|
|
Self::Name(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_list_expr(&self) -> bool {
|
|
matches!(self, Self::List(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn list_expr(self) -> Option<crate::ExprList> {
|
|
match self {
|
|
Self::List(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_list_expr(self) -> crate::ExprList {
|
|
match self {
|
|
Self::List(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_list_expr_mut(&mut self) -> Option<&mut crate::ExprList> {
|
|
match self {
|
|
Self::List(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_list_expr(&self) -> Option<&crate::ExprList> {
|
|
match self {
|
|
Self::List(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_tuple_expr(&self) -> bool {
|
|
matches!(self, Self::Tuple(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn tuple_expr(self) -> Option<crate::ExprTuple> {
|
|
match self {
|
|
Self::Tuple(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_tuple_expr(self) -> crate::ExprTuple {
|
|
match self {
|
|
Self::Tuple(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_tuple_expr_mut(&mut self) -> Option<&mut crate::ExprTuple> {
|
|
match self {
|
|
Self::Tuple(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_tuple_expr(&self) -> Option<&crate::ExprTuple> {
|
|
match self {
|
|
Self::Tuple(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_slice_expr(&self) -> bool {
|
|
matches!(self, Self::Slice(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn slice_expr(self) -> Option<crate::ExprSlice> {
|
|
match self {
|
|
Self::Slice(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_slice_expr(self) -> crate::ExprSlice {
|
|
match self {
|
|
Self::Slice(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_slice_expr_mut(&mut self) -> Option<&mut crate::ExprSlice> {
|
|
match self {
|
|
Self::Slice(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_slice_expr(&self) -> Option<&crate::ExprSlice> {
|
|
match self {
|
|
Self::Slice(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_ipy_escape_command_expr(&self) -> bool {
|
|
matches!(self, Self::IpyEscapeCommand(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn ipy_escape_command_expr(self) -> Option<crate::ExprIpyEscapeCommand> {
|
|
match self {
|
|
Self::IpyEscapeCommand(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_ipy_escape_command_expr(self) -> crate::ExprIpyEscapeCommand {
|
|
match self {
|
|
Self::IpyEscapeCommand(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_ipy_escape_command_expr_mut(&mut self) -> Option<&mut crate::ExprIpyEscapeCommand> {
|
|
match self {
|
|
Self::IpyEscapeCommand(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_ipy_escape_command_expr(&self) -> Option<&crate::ExprIpyEscapeCommand> {
|
|
match self {
|
|
Self::IpyEscapeCommand(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
}
|
|
|
|
/// See also [excepthandler](https://docs.python.org/3/library/ast.html#ast.excepthandler)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub enum ExceptHandler {
|
|
ExceptHandler(crate::ExceptHandlerExceptHandler),
|
|
}
|
|
|
|
impl From<crate::ExceptHandlerExceptHandler> for ExceptHandler {
|
|
fn from(node: crate::ExceptHandlerExceptHandler) -> Self {
|
|
Self::ExceptHandler(node)
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for ExceptHandler {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
match self {
|
|
Self::ExceptHandler(node) => node.range(),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[allow(dead_code, clippy::match_wildcard_for_single_variants)]
|
|
impl ExceptHandler {
|
|
#[inline]
|
|
pub const fn is_except_handler(&self) -> bool {
|
|
matches!(self, Self::ExceptHandler(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn except_handler(self) -> Option<crate::ExceptHandlerExceptHandler> {
|
|
match self {
|
|
Self::ExceptHandler(val) => Some(val),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_except_handler(self) -> crate::ExceptHandlerExceptHandler {
|
|
match self {
|
|
Self::ExceptHandler(val) => val,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_except_handler_mut(&mut self) -> Option<&mut crate::ExceptHandlerExceptHandler> {
|
|
match self {
|
|
Self::ExceptHandler(val) => Some(val),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_except_handler(&self) -> Option<&crate::ExceptHandlerExceptHandler> {
|
|
match self {
|
|
Self::ExceptHandler(val) => Some(val),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub enum FStringElement {
|
|
Expression(crate::FStringExpressionElement),
|
|
Literal(crate::FStringLiteralElement),
|
|
}
|
|
|
|
impl From<crate::FStringExpressionElement> for FStringElement {
|
|
fn from(node: crate::FStringExpressionElement) -> Self {
|
|
Self::Expression(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::FStringLiteralElement> for FStringElement {
|
|
fn from(node: crate::FStringLiteralElement) -> Self {
|
|
Self::Literal(node)
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for FStringElement {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
match self {
|
|
Self::Expression(node) => node.range(),
|
|
Self::Literal(node) => node.range(),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[allow(dead_code, clippy::match_wildcard_for_single_variants)]
|
|
impl FStringElement {
|
|
#[inline]
|
|
pub const fn is_expression(&self) -> bool {
|
|
matches!(self, Self::Expression(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expression(self) -> Option<crate::FStringExpressionElement> {
|
|
match self {
|
|
Self::Expression(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_expression(self) -> crate::FStringExpressionElement {
|
|
match self {
|
|
Self::Expression(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_expression_mut(&mut self) -> Option<&mut crate::FStringExpressionElement> {
|
|
match self {
|
|
Self::Expression(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_expression(&self) -> Option<&crate::FStringExpressionElement> {
|
|
match self {
|
|
Self::Expression(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_literal(&self) -> bool {
|
|
matches!(self, Self::Literal(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn literal(self) -> Option<crate::FStringLiteralElement> {
|
|
match self {
|
|
Self::Literal(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_literal(self) -> crate::FStringLiteralElement {
|
|
match self {
|
|
Self::Literal(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_literal_mut(&mut self) -> Option<&mut crate::FStringLiteralElement> {
|
|
match self {
|
|
Self::Literal(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_literal(&self) -> Option<&crate::FStringLiteralElement> {
|
|
match self {
|
|
Self::Literal(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
}
|
|
|
|
/// See also [pattern](https://docs.python.org/3/library/ast.html#ast.pattern)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub enum Pattern {
|
|
MatchValue(crate::PatternMatchValue),
|
|
MatchSingleton(crate::PatternMatchSingleton),
|
|
MatchSequence(crate::PatternMatchSequence),
|
|
MatchMapping(crate::PatternMatchMapping),
|
|
MatchClass(crate::PatternMatchClass),
|
|
MatchStar(crate::PatternMatchStar),
|
|
MatchAs(crate::PatternMatchAs),
|
|
MatchOr(crate::PatternMatchOr),
|
|
}
|
|
|
|
impl From<crate::PatternMatchValue> for Pattern {
|
|
fn from(node: crate::PatternMatchValue) -> Self {
|
|
Self::MatchValue(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::PatternMatchSingleton> for Pattern {
|
|
fn from(node: crate::PatternMatchSingleton) -> Self {
|
|
Self::MatchSingleton(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::PatternMatchSequence> for Pattern {
|
|
fn from(node: crate::PatternMatchSequence) -> Self {
|
|
Self::MatchSequence(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::PatternMatchMapping> for Pattern {
|
|
fn from(node: crate::PatternMatchMapping) -> Self {
|
|
Self::MatchMapping(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::PatternMatchClass> for Pattern {
|
|
fn from(node: crate::PatternMatchClass) -> Self {
|
|
Self::MatchClass(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::PatternMatchStar> for Pattern {
|
|
fn from(node: crate::PatternMatchStar) -> Self {
|
|
Self::MatchStar(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::PatternMatchAs> for Pattern {
|
|
fn from(node: crate::PatternMatchAs) -> Self {
|
|
Self::MatchAs(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::PatternMatchOr> for Pattern {
|
|
fn from(node: crate::PatternMatchOr) -> Self {
|
|
Self::MatchOr(node)
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for Pattern {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
match self {
|
|
Self::MatchValue(node) => node.range(),
|
|
Self::MatchSingleton(node) => node.range(),
|
|
Self::MatchSequence(node) => node.range(),
|
|
Self::MatchMapping(node) => node.range(),
|
|
Self::MatchClass(node) => node.range(),
|
|
Self::MatchStar(node) => node.range(),
|
|
Self::MatchAs(node) => node.range(),
|
|
Self::MatchOr(node) => node.range(),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[allow(dead_code, clippy::match_wildcard_for_single_variants)]
|
|
impl Pattern {
|
|
#[inline]
|
|
pub const fn is_match_value(&self) -> bool {
|
|
matches!(self, Self::MatchValue(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn match_value(self) -> Option<crate::PatternMatchValue> {
|
|
match self {
|
|
Self::MatchValue(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_match_value(self) -> crate::PatternMatchValue {
|
|
match self {
|
|
Self::MatchValue(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_match_value_mut(&mut self) -> Option<&mut crate::PatternMatchValue> {
|
|
match self {
|
|
Self::MatchValue(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_match_value(&self) -> Option<&crate::PatternMatchValue> {
|
|
match self {
|
|
Self::MatchValue(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_match_singleton(&self) -> bool {
|
|
matches!(self, Self::MatchSingleton(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn match_singleton(self) -> Option<crate::PatternMatchSingleton> {
|
|
match self {
|
|
Self::MatchSingleton(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_match_singleton(self) -> crate::PatternMatchSingleton {
|
|
match self {
|
|
Self::MatchSingleton(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_match_singleton_mut(&mut self) -> Option<&mut crate::PatternMatchSingleton> {
|
|
match self {
|
|
Self::MatchSingleton(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_match_singleton(&self) -> Option<&crate::PatternMatchSingleton> {
|
|
match self {
|
|
Self::MatchSingleton(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_match_sequence(&self) -> bool {
|
|
matches!(self, Self::MatchSequence(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn match_sequence(self) -> Option<crate::PatternMatchSequence> {
|
|
match self {
|
|
Self::MatchSequence(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_match_sequence(self) -> crate::PatternMatchSequence {
|
|
match self {
|
|
Self::MatchSequence(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_match_sequence_mut(&mut self) -> Option<&mut crate::PatternMatchSequence> {
|
|
match self {
|
|
Self::MatchSequence(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_match_sequence(&self) -> Option<&crate::PatternMatchSequence> {
|
|
match self {
|
|
Self::MatchSequence(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_match_mapping(&self) -> bool {
|
|
matches!(self, Self::MatchMapping(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn match_mapping(self) -> Option<crate::PatternMatchMapping> {
|
|
match self {
|
|
Self::MatchMapping(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_match_mapping(self) -> crate::PatternMatchMapping {
|
|
match self {
|
|
Self::MatchMapping(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_match_mapping_mut(&mut self) -> Option<&mut crate::PatternMatchMapping> {
|
|
match self {
|
|
Self::MatchMapping(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_match_mapping(&self) -> Option<&crate::PatternMatchMapping> {
|
|
match self {
|
|
Self::MatchMapping(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_match_class(&self) -> bool {
|
|
matches!(self, Self::MatchClass(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn match_class(self) -> Option<crate::PatternMatchClass> {
|
|
match self {
|
|
Self::MatchClass(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_match_class(self) -> crate::PatternMatchClass {
|
|
match self {
|
|
Self::MatchClass(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_match_class_mut(&mut self) -> Option<&mut crate::PatternMatchClass> {
|
|
match self {
|
|
Self::MatchClass(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_match_class(&self) -> Option<&crate::PatternMatchClass> {
|
|
match self {
|
|
Self::MatchClass(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_match_star(&self) -> bool {
|
|
matches!(self, Self::MatchStar(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn match_star(self) -> Option<crate::PatternMatchStar> {
|
|
match self {
|
|
Self::MatchStar(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_match_star(self) -> crate::PatternMatchStar {
|
|
match self {
|
|
Self::MatchStar(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_match_star_mut(&mut self) -> Option<&mut crate::PatternMatchStar> {
|
|
match self {
|
|
Self::MatchStar(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_match_star(&self) -> Option<&crate::PatternMatchStar> {
|
|
match self {
|
|
Self::MatchStar(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_match_as(&self) -> bool {
|
|
matches!(self, Self::MatchAs(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn match_as(self) -> Option<crate::PatternMatchAs> {
|
|
match self {
|
|
Self::MatchAs(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_match_as(self) -> crate::PatternMatchAs {
|
|
match self {
|
|
Self::MatchAs(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_match_as_mut(&mut self) -> Option<&mut crate::PatternMatchAs> {
|
|
match self {
|
|
Self::MatchAs(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_match_as(&self) -> Option<&crate::PatternMatchAs> {
|
|
match self {
|
|
Self::MatchAs(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_match_or(&self) -> bool {
|
|
matches!(self, Self::MatchOr(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn match_or(self) -> Option<crate::PatternMatchOr> {
|
|
match self {
|
|
Self::MatchOr(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_match_or(self) -> crate::PatternMatchOr {
|
|
match self {
|
|
Self::MatchOr(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_match_or_mut(&mut self) -> Option<&mut crate::PatternMatchOr> {
|
|
match self {
|
|
Self::MatchOr(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_match_or(&self) -> Option<&crate::PatternMatchOr> {
|
|
match self {
|
|
Self::MatchOr(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
}
|
|
|
|
/// See also [type_param](https://docs.python.org/3/library/ast.html#ast.type_param)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub enum TypeParam {
|
|
TypeVar(crate::TypeParamTypeVar),
|
|
TypeVarTuple(crate::TypeParamTypeVarTuple),
|
|
ParamSpec(crate::TypeParamParamSpec),
|
|
}
|
|
|
|
impl From<crate::TypeParamTypeVar> for TypeParam {
|
|
fn from(node: crate::TypeParamTypeVar) -> Self {
|
|
Self::TypeVar(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::TypeParamTypeVarTuple> for TypeParam {
|
|
fn from(node: crate::TypeParamTypeVarTuple) -> Self {
|
|
Self::TypeVarTuple(node)
|
|
}
|
|
}
|
|
|
|
impl From<crate::TypeParamParamSpec> for TypeParam {
|
|
fn from(node: crate::TypeParamParamSpec) -> Self {
|
|
Self::ParamSpec(node)
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for TypeParam {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
match self {
|
|
Self::TypeVar(node) => node.range(),
|
|
Self::TypeVarTuple(node) => node.range(),
|
|
Self::ParamSpec(node) => node.range(),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[allow(dead_code, clippy::match_wildcard_for_single_variants)]
|
|
impl TypeParam {
|
|
#[inline]
|
|
pub const fn is_type_var(&self) -> bool {
|
|
matches!(self, Self::TypeVar(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn type_var(self) -> Option<crate::TypeParamTypeVar> {
|
|
match self {
|
|
Self::TypeVar(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_type_var(self) -> crate::TypeParamTypeVar {
|
|
match self {
|
|
Self::TypeVar(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_type_var_mut(&mut self) -> Option<&mut crate::TypeParamTypeVar> {
|
|
match self {
|
|
Self::TypeVar(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_type_var(&self) -> Option<&crate::TypeParamTypeVar> {
|
|
match self {
|
|
Self::TypeVar(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_type_var_tuple(&self) -> bool {
|
|
matches!(self, Self::TypeVarTuple(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn type_var_tuple(self) -> Option<crate::TypeParamTypeVarTuple> {
|
|
match self {
|
|
Self::TypeVarTuple(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_type_var_tuple(self) -> crate::TypeParamTypeVarTuple {
|
|
match self {
|
|
Self::TypeVarTuple(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_type_var_tuple_mut(&mut self) -> Option<&mut crate::TypeParamTypeVarTuple> {
|
|
match self {
|
|
Self::TypeVarTuple(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_type_var_tuple(&self) -> Option<&crate::TypeParamTypeVarTuple> {
|
|
match self {
|
|
Self::TypeVarTuple(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub const fn is_param_spec(&self) -> bool {
|
|
matches!(self, Self::ParamSpec(_))
|
|
}
|
|
|
|
#[inline]
|
|
pub fn param_spec(self) -> Option<crate::TypeParamParamSpec> {
|
|
match self {
|
|
Self::ParamSpec(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn expect_param_spec(self) -> crate::TypeParamParamSpec {
|
|
match self {
|
|
Self::ParamSpec(val) => val,
|
|
_ => panic!("called expect on {self:?}"),
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_param_spec_mut(&mut self) -> Option<&mut crate::TypeParamParamSpec> {
|
|
match self {
|
|
Self::ParamSpec(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
|
|
#[inline]
|
|
pub fn as_param_spec(&self) -> Option<&crate::TypeParamParamSpec> {
|
|
match self {
|
|
Self::ParamSpec(val) => Some(val),
|
|
_ => None,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ModModule {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ModExpression {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtFunctionDef {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtClassDef {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtReturn {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtDelete {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtTypeAlias {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtAssign {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtAugAssign {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtAnnAssign {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtFor {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtWhile {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtIf {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtWith {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtMatch {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtRaise {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtTry {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtAssert {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtImport {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtImportFrom {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtGlobal {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtNonlocal {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtExpr {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtPass {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtBreak {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtContinue {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StmtIpyEscapeCommand {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprBoolOp {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprNamed {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprBinOp {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprUnaryOp {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprLambda {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprIf {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprDict {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprSet {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprListComp {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprSetComp {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprDictComp {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprGenerator {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprAwait {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprYield {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprYieldFrom {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprCompare {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprCall {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprFString {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprStringLiteral {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprBytesLiteral {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprNumberLiteral {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprBooleanLiteral {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprNoneLiteral {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprEllipsisLiteral {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprAttribute {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprSubscript {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprStarred {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprName {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprList {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprTuple {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprSlice {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExprIpyEscapeCommand {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ExceptHandlerExceptHandler {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::FStringExpressionElement {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::FStringLiteralElement {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::PatternMatchValue {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::PatternMatchSingleton {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::PatternMatchSequence {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::PatternMatchMapping {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::PatternMatchClass {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::PatternMatchStar {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::PatternMatchAs {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::PatternMatchOr {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::TypeParamTypeVar {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::TypeParamTypeVarTuple {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::TypeParamParamSpec {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::FStringFormatSpec {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::PatternArguments {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::PatternKeyword {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::Comprehension {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::Arguments {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::Parameters {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::Parameter {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ParameterWithDefault {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::Keyword {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::Alias {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::WithItem {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::MatchCase {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::Decorator {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::ElifElseClause {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::TypeParams {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::FString {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::StringLiteral {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::BytesLiteral {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for crate::Identifier {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
self.range
|
|
}
|
|
}
|
|
|
|
impl Mod {
|
|
#[allow(unused)]
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: crate::visitor::source_order::SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
match self {
|
|
Mod::Module(node) => node.visit_source_order(visitor),
|
|
Mod::Expression(node) => node.visit_source_order(visitor),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Stmt {
|
|
#[allow(unused)]
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: crate::visitor::source_order::SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
match self {
|
|
Stmt::FunctionDef(node) => node.visit_source_order(visitor),
|
|
Stmt::ClassDef(node) => node.visit_source_order(visitor),
|
|
Stmt::Return(node) => node.visit_source_order(visitor),
|
|
Stmt::Delete(node) => node.visit_source_order(visitor),
|
|
Stmt::TypeAlias(node) => node.visit_source_order(visitor),
|
|
Stmt::Assign(node) => node.visit_source_order(visitor),
|
|
Stmt::AugAssign(node) => node.visit_source_order(visitor),
|
|
Stmt::AnnAssign(node) => node.visit_source_order(visitor),
|
|
Stmt::For(node) => node.visit_source_order(visitor),
|
|
Stmt::While(node) => node.visit_source_order(visitor),
|
|
Stmt::If(node) => node.visit_source_order(visitor),
|
|
Stmt::With(node) => node.visit_source_order(visitor),
|
|
Stmt::Match(node) => node.visit_source_order(visitor),
|
|
Stmt::Raise(node) => node.visit_source_order(visitor),
|
|
Stmt::Try(node) => node.visit_source_order(visitor),
|
|
Stmt::Assert(node) => node.visit_source_order(visitor),
|
|
Stmt::Import(node) => node.visit_source_order(visitor),
|
|
Stmt::ImportFrom(node) => node.visit_source_order(visitor),
|
|
Stmt::Global(node) => node.visit_source_order(visitor),
|
|
Stmt::Nonlocal(node) => node.visit_source_order(visitor),
|
|
Stmt::Expr(node) => node.visit_source_order(visitor),
|
|
Stmt::Pass(node) => node.visit_source_order(visitor),
|
|
Stmt::Break(node) => node.visit_source_order(visitor),
|
|
Stmt::Continue(node) => node.visit_source_order(visitor),
|
|
Stmt::IpyEscapeCommand(node) => node.visit_source_order(visitor),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Expr {
|
|
#[allow(unused)]
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: crate::visitor::source_order::SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
match self {
|
|
Expr::BoolOp(node) => node.visit_source_order(visitor),
|
|
Expr::Named(node) => node.visit_source_order(visitor),
|
|
Expr::BinOp(node) => node.visit_source_order(visitor),
|
|
Expr::UnaryOp(node) => node.visit_source_order(visitor),
|
|
Expr::Lambda(node) => node.visit_source_order(visitor),
|
|
Expr::If(node) => node.visit_source_order(visitor),
|
|
Expr::Dict(node) => node.visit_source_order(visitor),
|
|
Expr::Set(node) => node.visit_source_order(visitor),
|
|
Expr::ListComp(node) => node.visit_source_order(visitor),
|
|
Expr::SetComp(node) => node.visit_source_order(visitor),
|
|
Expr::DictComp(node) => node.visit_source_order(visitor),
|
|
Expr::Generator(node) => node.visit_source_order(visitor),
|
|
Expr::Await(node) => node.visit_source_order(visitor),
|
|
Expr::Yield(node) => node.visit_source_order(visitor),
|
|
Expr::YieldFrom(node) => node.visit_source_order(visitor),
|
|
Expr::Compare(node) => node.visit_source_order(visitor),
|
|
Expr::Call(node) => node.visit_source_order(visitor),
|
|
Expr::FString(node) => node.visit_source_order(visitor),
|
|
Expr::StringLiteral(node) => node.visit_source_order(visitor),
|
|
Expr::BytesLiteral(node) => node.visit_source_order(visitor),
|
|
Expr::NumberLiteral(node) => node.visit_source_order(visitor),
|
|
Expr::BooleanLiteral(node) => node.visit_source_order(visitor),
|
|
Expr::NoneLiteral(node) => node.visit_source_order(visitor),
|
|
Expr::EllipsisLiteral(node) => node.visit_source_order(visitor),
|
|
Expr::Attribute(node) => node.visit_source_order(visitor),
|
|
Expr::Subscript(node) => node.visit_source_order(visitor),
|
|
Expr::Starred(node) => node.visit_source_order(visitor),
|
|
Expr::Name(node) => node.visit_source_order(visitor),
|
|
Expr::List(node) => node.visit_source_order(visitor),
|
|
Expr::Tuple(node) => node.visit_source_order(visitor),
|
|
Expr::Slice(node) => node.visit_source_order(visitor),
|
|
Expr::IpyEscapeCommand(node) => node.visit_source_order(visitor),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl ExceptHandler {
|
|
#[allow(unused)]
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: crate::visitor::source_order::SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
match self {
|
|
ExceptHandler::ExceptHandler(node) => node.visit_source_order(visitor),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl FStringElement {
|
|
#[allow(unused)]
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: crate::visitor::source_order::SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
match self {
|
|
FStringElement::Expression(node) => node.visit_source_order(visitor),
|
|
FStringElement::Literal(node) => node.visit_source_order(visitor),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl Pattern {
|
|
#[allow(unused)]
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: crate::visitor::source_order::SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
match self {
|
|
Pattern::MatchValue(node) => node.visit_source_order(visitor),
|
|
Pattern::MatchSingleton(node) => node.visit_source_order(visitor),
|
|
Pattern::MatchSequence(node) => node.visit_source_order(visitor),
|
|
Pattern::MatchMapping(node) => node.visit_source_order(visitor),
|
|
Pattern::MatchClass(node) => node.visit_source_order(visitor),
|
|
Pattern::MatchStar(node) => node.visit_source_order(visitor),
|
|
Pattern::MatchAs(node) => node.visit_source_order(visitor),
|
|
Pattern::MatchOr(node) => node.visit_source_order(visitor),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl TypeParam {
|
|
#[allow(unused)]
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: crate::visitor::source_order::SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
match self {
|
|
TypeParam::TypeVar(node) => node.visit_source_order(visitor),
|
|
TypeParam::TypeVarTuple(node) => node.visit_source_order(visitor),
|
|
TypeParam::ParamSpec(node) => node.visit_source_order(visitor),
|
|
}
|
|
}
|
|
}
|
|
|
|
/// See also [mod](https://docs.python.org/3/library/ast.html#ast.mod)
|
|
#[derive(Clone, Copy, Debug, PartialEq, is_macro::Is)]
|
|
pub enum ModRef<'a> {
|
|
Module(&'a crate::ModModule),
|
|
Expression(&'a crate::ModExpression),
|
|
}
|
|
|
|
impl<'a> From<&'a Mod> for ModRef<'a> {
|
|
fn from(node: &'a Mod) -> Self {
|
|
match node {
|
|
Mod::Module(node) => ModRef::Module(node),
|
|
Mod::Expression(node) => ModRef::Expression(node),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ModModule> for ModRef<'a> {
|
|
fn from(node: &'a crate::ModModule) -> Self {
|
|
Self::Module(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ModExpression> for ModRef<'a> {
|
|
fn from(node: &'a crate::ModExpression) -> Self {
|
|
Self::Expression(node)
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for ModRef<'_> {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
match self {
|
|
Self::Module(node) => node.range(),
|
|
Self::Expression(node) => node.range(),
|
|
}
|
|
}
|
|
}
|
|
|
|
/// 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> {
|
|
#[is(name = "function_def_stmt")]
|
|
FunctionDef(&'a crate::StmtFunctionDef),
|
|
#[is(name = "class_def_stmt")]
|
|
ClassDef(&'a crate::StmtClassDef),
|
|
#[is(name = "return_stmt")]
|
|
Return(&'a crate::StmtReturn),
|
|
#[is(name = "delete_stmt")]
|
|
Delete(&'a crate::StmtDelete),
|
|
#[is(name = "type_alias_stmt")]
|
|
TypeAlias(&'a crate::StmtTypeAlias),
|
|
#[is(name = "assign_stmt")]
|
|
Assign(&'a crate::StmtAssign),
|
|
#[is(name = "aug_assign_stmt")]
|
|
AugAssign(&'a crate::StmtAugAssign),
|
|
#[is(name = "ann_assign_stmt")]
|
|
AnnAssign(&'a crate::StmtAnnAssign),
|
|
#[is(name = "for_stmt")]
|
|
For(&'a crate::StmtFor),
|
|
#[is(name = "while_stmt")]
|
|
While(&'a crate::StmtWhile),
|
|
#[is(name = "if_stmt")]
|
|
If(&'a crate::StmtIf),
|
|
#[is(name = "with_stmt")]
|
|
With(&'a crate::StmtWith),
|
|
#[is(name = "match_stmt")]
|
|
Match(&'a crate::StmtMatch),
|
|
#[is(name = "raise_stmt")]
|
|
Raise(&'a crate::StmtRaise),
|
|
#[is(name = "try_stmt")]
|
|
Try(&'a crate::StmtTry),
|
|
#[is(name = "assert_stmt")]
|
|
Assert(&'a crate::StmtAssert),
|
|
#[is(name = "import_stmt")]
|
|
Import(&'a crate::StmtImport),
|
|
#[is(name = "import_from_stmt")]
|
|
ImportFrom(&'a crate::StmtImportFrom),
|
|
#[is(name = "global_stmt")]
|
|
Global(&'a crate::StmtGlobal),
|
|
#[is(name = "nonlocal_stmt")]
|
|
Nonlocal(&'a crate::StmtNonlocal),
|
|
#[is(name = "expr_stmt")]
|
|
Expr(&'a crate::StmtExpr),
|
|
#[is(name = "pass_stmt")]
|
|
Pass(&'a crate::StmtPass),
|
|
#[is(name = "break_stmt")]
|
|
Break(&'a crate::StmtBreak),
|
|
#[is(name = "continue_stmt")]
|
|
Continue(&'a crate::StmtContinue),
|
|
#[is(name = "ipy_escape_command_stmt")]
|
|
IpyEscapeCommand(&'a crate::StmtIpyEscapeCommand),
|
|
}
|
|
|
|
impl<'a> From<&'a Stmt> for StmtRef<'a> {
|
|
fn from(node: &'a Stmt) -> Self {
|
|
match node {
|
|
Stmt::FunctionDef(node) => StmtRef::FunctionDef(node),
|
|
Stmt::ClassDef(node) => StmtRef::ClassDef(node),
|
|
Stmt::Return(node) => StmtRef::Return(node),
|
|
Stmt::Delete(node) => StmtRef::Delete(node),
|
|
Stmt::TypeAlias(node) => StmtRef::TypeAlias(node),
|
|
Stmt::Assign(node) => StmtRef::Assign(node),
|
|
Stmt::AugAssign(node) => StmtRef::AugAssign(node),
|
|
Stmt::AnnAssign(node) => StmtRef::AnnAssign(node),
|
|
Stmt::For(node) => StmtRef::For(node),
|
|
Stmt::While(node) => StmtRef::While(node),
|
|
Stmt::If(node) => StmtRef::If(node),
|
|
Stmt::With(node) => StmtRef::With(node),
|
|
Stmt::Match(node) => StmtRef::Match(node),
|
|
Stmt::Raise(node) => StmtRef::Raise(node),
|
|
Stmt::Try(node) => StmtRef::Try(node),
|
|
Stmt::Assert(node) => StmtRef::Assert(node),
|
|
Stmt::Import(node) => StmtRef::Import(node),
|
|
Stmt::ImportFrom(node) => StmtRef::ImportFrom(node),
|
|
Stmt::Global(node) => StmtRef::Global(node),
|
|
Stmt::Nonlocal(node) => StmtRef::Nonlocal(node),
|
|
Stmt::Expr(node) => StmtRef::Expr(node),
|
|
Stmt::Pass(node) => StmtRef::Pass(node),
|
|
Stmt::Break(node) => StmtRef::Break(node),
|
|
Stmt::Continue(node) => StmtRef::Continue(node),
|
|
Stmt::IpyEscapeCommand(node) => StmtRef::IpyEscapeCommand(node),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtFunctionDef> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtFunctionDef) -> Self {
|
|
Self::FunctionDef(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtClassDef> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtClassDef) -> Self {
|
|
Self::ClassDef(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtReturn> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtReturn) -> Self {
|
|
Self::Return(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtDelete> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtDelete) -> Self {
|
|
Self::Delete(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtTypeAlias> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtTypeAlias) -> Self {
|
|
Self::TypeAlias(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtAssign> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtAssign) -> Self {
|
|
Self::Assign(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtAugAssign> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtAugAssign) -> Self {
|
|
Self::AugAssign(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtAnnAssign> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtAnnAssign) -> Self {
|
|
Self::AnnAssign(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtFor> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtFor) -> Self {
|
|
Self::For(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtWhile> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtWhile) -> Self {
|
|
Self::While(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtIf> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtIf) -> Self {
|
|
Self::If(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtWith> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtWith) -> Self {
|
|
Self::With(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtMatch> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtMatch) -> Self {
|
|
Self::Match(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtRaise> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtRaise) -> Self {
|
|
Self::Raise(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtTry> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtTry) -> Self {
|
|
Self::Try(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtAssert> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtAssert) -> Self {
|
|
Self::Assert(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtImport> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtImport) -> Self {
|
|
Self::Import(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtImportFrom> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtImportFrom) -> Self {
|
|
Self::ImportFrom(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtGlobal> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtGlobal) -> Self {
|
|
Self::Global(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtNonlocal> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtNonlocal) -> Self {
|
|
Self::Nonlocal(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtExpr> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtExpr) -> Self {
|
|
Self::Expr(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtPass> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtPass) -> Self {
|
|
Self::Pass(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtBreak> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtBreak) -> Self {
|
|
Self::Break(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtContinue> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtContinue) -> Self {
|
|
Self::Continue(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtIpyEscapeCommand> for StmtRef<'a> {
|
|
fn from(node: &'a crate::StmtIpyEscapeCommand) -> Self {
|
|
Self::IpyEscapeCommand(node)
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for StmtRef<'_> {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
match self {
|
|
Self::FunctionDef(node) => node.range(),
|
|
Self::ClassDef(node) => node.range(),
|
|
Self::Return(node) => node.range(),
|
|
Self::Delete(node) => node.range(),
|
|
Self::TypeAlias(node) => node.range(),
|
|
Self::Assign(node) => node.range(),
|
|
Self::AugAssign(node) => node.range(),
|
|
Self::AnnAssign(node) => node.range(),
|
|
Self::For(node) => node.range(),
|
|
Self::While(node) => node.range(),
|
|
Self::If(node) => node.range(),
|
|
Self::With(node) => node.range(),
|
|
Self::Match(node) => node.range(),
|
|
Self::Raise(node) => node.range(),
|
|
Self::Try(node) => node.range(),
|
|
Self::Assert(node) => node.range(),
|
|
Self::Import(node) => node.range(),
|
|
Self::ImportFrom(node) => node.range(),
|
|
Self::Global(node) => node.range(),
|
|
Self::Nonlocal(node) => node.range(),
|
|
Self::Expr(node) => node.range(),
|
|
Self::Pass(node) => node.range(),
|
|
Self::Break(node) => node.range(),
|
|
Self::Continue(node) => node.range(),
|
|
Self::IpyEscapeCommand(node) => node.range(),
|
|
}
|
|
}
|
|
}
|
|
|
|
/// 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> {
|
|
#[is(name = "bool_op_expr")]
|
|
BoolOp(&'a crate::ExprBoolOp),
|
|
#[is(name = "named_expr")]
|
|
Named(&'a crate::ExprNamed),
|
|
#[is(name = "bin_op_expr")]
|
|
BinOp(&'a crate::ExprBinOp),
|
|
#[is(name = "unary_op_expr")]
|
|
UnaryOp(&'a crate::ExprUnaryOp),
|
|
#[is(name = "lambda_expr")]
|
|
Lambda(&'a crate::ExprLambda),
|
|
#[is(name = "if_expr")]
|
|
If(&'a crate::ExprIf),
|
|
#[is(name = "dict_expr")]
|
|
Dict(&'a crate::ExprDict),
|
|
#[is(name = "set_expr")]
|
|
Set(&'a crate::ExprSet),
|
|
#[is(name = "list_comp_expr")]
|
|
ListComp(&'a crate::ExprListComp),
|
|
#[is(name = "set_comp_expr")]
|
|
SetComp(&'a crate::ExprSetComp),
|
|
#[is(name = "dict_comp_expr")]
|
|
DictComp(&'a crate::ExprDictComp),
|
|
#[is(name = "generator_expr")]
|
|
Generator(&'a crate::ExprGenerator),
|
|
#[is(name = "await_expr")]
|
|
Await(&'a crate::ExprAwait),
|
|
#[is(name = "yield_expr")]
|
|
Yield(&'a crate::ExprYield),
|
|
#[is(name = "yield_from_expr")]
|
|
YieldFrom(&'a crate::ExprYieldFrom),
|
|
#[is(name = "compare_expr")]
|
|
Compare(&'a crate::ExprCompare),
|
|
#[is(name = "call_expr")]
|
|
Call(&'a crate::ExprCall),
|
|
#[is(name = "f_string_expr")]
|
|
FString(&'a crate::ExprFString),
|
|
#[is(name = "string_literal_expr")]
|
|
StringLiteral(&'a crate::ExprStringLiteral),
|
|
#[is(name = "bytes_literal_expr")]
|
|
BytesLiteral(&'a crate::ExprBytesLiteral),
|
|
#[is(name = "number_literal_expr")]
|
|
NumberLiteral(&'a crate::ExprNumberLiteral),
|
|
#[is(name = "boolean_literal_expr")]
|
|
BooleanLiteral(&'a crate::ExprBooleanLiteral),
|
|
#[is(name = "none_literal_expr")]
|
|
NoneLiteral(&'a crate::ExprNoneLiteral),
|
|
#[is(name = "ellipsis_literal_expr")]
|
|
EllipsisLiteral(&'a crate::ExprEllipsisLiteral),
|
|
#[is(name = "attribute_expr")]
|
|
Attribute(&'a crate::ExprAttribute),
|
|
#[is(name = "subscript_expr")]
|
|
Subscript(&'a crate::ExprSubscript),
|
|
#[is(name = "starred_expr")]
|
|
Starred(&'a crate::ExprStarred),
|
|
#[is(name = "name_expr")]
|
|
Name(&'a crate::ExprName),
|
|
#[is(name = "list_expr")]
|
|
List(&'a crate::ExprList),
|
|
#[is(name = "tuple_expr")]
|
|
Tuple(&'a crate::ExprTuple),
|
|
#[is(name = "slice_expr")]
|
|
Slice(&'a crate::ExprSlice),
|
|
#[is(name = "ipy_escape_command_expr")]
|
|
IpyEscapeCommand(&'a crate::ExprIpyEscapeCommand),
|
|
}
|
|
|
|
impl<'a> From<&'a Expr> for ExprRef<'a> {
|
|
fn from(node: &'a Expr) -> Self {
|
|
match node {
|
|
Expr::BoolOp(node) => ExprRef::BoolOp(node),
|
|
Expr::Named(node) => ExprRef::Named(node),
|
|
Expr::BinOp(node) => ExprRef::BinOp(node),
|
|
Expr::UnaryOp(node) => ExprRef::UnaryOp(node),
|
|
Expr::Lambda(node) => ExprRef::Lambda(node),
|
|
Expr::If(node) => ExprRef::If(node),
|
|
Expr::Dict(node) => ExprRef::Dict(node),
|
|
Expr::Set(node) => ExprRef::Set(node),
|
|
Expr::ListComp(node) => ExprRef::ListComp(node),
|
|
Expr::SetComp(node) => ExprRef::SetComp(node),
|
|
Expr::DictComp(node) => ExprRef::DictComp(node),
|
|
Expr::Generator(node) => ExprRef::Generator(node),
|
|
Expr::Await(node) => ExprRef::Await(node),
|
|
Expr::Yield(node) => ExprRef::Yield(node),
|
|
Expr::YieldFrom(node) => ExprRef::YieldFrom(node),
|
|
Expr::Compare(node) => ExprRef::Compare(node),
|
|
Expr::Call(node) => ExprRef::Call(node),
|
|
Expr::FString(node) => ExprRef::FString(node),
|
|
Expr::StringLiteral(node) => ExprRef::StringLiteral(node),
|
|
Expr::BytesLiteral(node) => ExprRef::BytesLiteral(node),
|
|
Expr::NumberLiteral(node) => ExprRef::NumberLiteral(node),
|
|
Expr::BooleanLiteral(node) => ExprRef::BooleanLiteral(node),
|
|
Expr::NoneLiteral(node) => ExprRef::NoneLiteral(node),
|
|
Expr::EllipsisLiteral(node) => ExprRef::EllipsisLiteral(node),
|
|
Expr::Attribute(node) => ExprRef::Attribute(node),
|
|
Expr::Subscript(node) => ExprRef::Subscript(node),
|
|
Expr::Starred(node) => ExprRef::Starred(node),
|
|
Expr::Name(node) => ExprRef::Name(node),
|
|
Expr::List(node) => ExprRef::List(node),
|
|
Expr::Tuple(node) => ExprRef::Tuple(node),
|
|
Expr::Slice(node) => ExprRef::Slice(node),
|
|
Expr::IpyEscapeCommand(node) => ExprRef::IpyEscapeCommand(node),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprBoolOp> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprBoolOp) -> Self {
|
|
Self::BoolOp(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprNamed> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprNamed) -> Self {
|
|
Self::Named(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprBinOp> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprBinOp) -> Self {
|
|
Self::BinOp(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprUnaryOp> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprUnaryOp) -> Self {
|
|
Self::UnaryOp(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprLambda> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprLambda) -> Self {
|
|
Self::Lambda(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprIf> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprIf) -> Self {
|
|
Self::If(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprDict> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprDict) -> Self {
|
|
Self::Dict(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprSet> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprSet) -> Self {
|
|
Self::Set(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprListComp> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprListComp) -> Self {
|
|
Self::ListComp(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprSetComp> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprSetComp) -> Self {
|
|
Self::SetComp(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprDictComp> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprDictComp) -> Self {
|
|
Self::DictComp(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprGenerator> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprGenerator) -> Self {
|
|
Self::Generator(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprAwait> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprAwait) -> Self {
|
|
Self::Await(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprYield> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprYield) -> Self {
|
|
Self::Yield(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprYieldFrom> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprYieldFrom) -> Self {
|
|
Self::YieldFrom(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprCompare> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprCompare) -> Self {
|
|
Self::Compare(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprCall> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprCall) -> Self {
|
|
Self::Call(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprFString> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprFString) -> Self {
|
|
Self::FString(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprStringLiteral> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprStringLiteral) -> Self {
|
|
Self::StringLiteral(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprBytesLiteral> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprBytesLiteral) -> Self {
|
|
Self::BytesLiteral(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprNumberLiteral> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprNumberLiteral) -> Self {
|
|
Self::NumberLiteral(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprBooleanLiteral> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprBooleanLiteral) -> Self {
|
|
Self::BooleanLiteral(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprNoneLiteral> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprNoneLiteral) -> Self {
|
|
Self::NoneLiteral(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprEllipsisLiteral> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprEllipsisLiteral) -> Self {
|
|
Self::EllipsisLiteral(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprAttribute> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprAttribute) -> Self {
|
|
Self::Attribute(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprSubscript> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprSubscript) -> Self {
|
|
Self::Subscript(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprStarred> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprStarred) -> Self {
|
|
Self::Starred(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprName> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprName) -> Self {
|
|
Self::Name(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprList> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprList) -> Self {
|
|
Self::List(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprTuple> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprTuple) -> Self {
|
|
Self::Tuple(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprSlice> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprSlice) -> Self {
|
|
Self::Slice(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprIpyEscapeCommand> for ExprRef<'a> {
|
|
fn from(node: &'a crate::ExprIpyEscapeCommand) -> Self {
|
|
Self::IpyEscapeCommand(node)
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for ExprRef<'_> {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
match self {
|
|
Self::BoolOp(node) => node.range(),
|
|
Self::Named(node) => node.range(),
|
|
Self::BinOp(node) => node.range(),
|
|
Self::UnaryOp(node) => node.range(),
|
|
Self::Lambda(node) => node.range(),
|
|
Self::If(node) => node.range(),
|
|
Self::Dict(node) => node.range(),
|
|
Self::Set(node) => node.range(),
|
|
Self::ListComp(node) => node.range(),
|
|
Self::SetComp(node) => node.range(),
|
|
Self::DictComp(node) => node.range(),
|
|
Self::Generator(node) => node.range(),
|
|
Self::Await(node) => node.range(),
|
|
Self::Yield(node) => node.range(),
|
|
Self::YieldFrom(node) => node.range(),
|
|
Self::Compare(node) => node.range(),
|
|
Self::Call(node) => node.range(),
|
|
Self::FString(node) => node.range(),
|
|
Self::StringLiteral(node) => node.range(),
|
|
Self::BytesLiteral(node) => node.range(),
|
|
Self::NumberLiteral(node) => node.range(),
|
|
Self::BooleanLiteral(node) => node.range(),
|
|
Self::NoneLiteral(node) => node.range(),
|
|
Self::EllipsisLiteral(node) => node.range(),
|
|
Self::Attribute(node) => node.range(),
|
|
Self::Subscript(node) => node.range(),
|
|
Self::Starred(node) => node.range(),
|
|
Self::Name(node) => node.range(),
|
|
Self::List(node) => node.range(),
|
|
Self::Tuple(node) => node.range(),
|
|
Self::Slice(node) => node.range(),
|
|
Self::IpyEscapeCommand(node) => node.range(),
|
|
}
|
|
}
|
|
}
|
|
|
|
/// 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> {
|
|
ExceptHandler(&'a crate::ExceptHandlerExceptHandler),
|
|
}
|
|
|
|
impl<'a> From<&'a ExceptHandler> for ExceptHandlerRef<'a> {
|
|
fn from(node: &'a ExceptHandler) -> Self {
|
|
match node {
|
|
ExceptHandler::ExceptHandler(node) => ExceptHandlerRef::ExceptHandler(node),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExceptHandlerExceptHandler> for ExceptHandlerRef<'a> {
|
|
fn from(node: &'a crate::ExceptHandlerExceptHandler) -> Self {
|
|
Self::ExceptHandler(node)
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for ExceptHandlerRef<'_> {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
match self {
|
|
Self::ExceptHandler(node) => node.range(),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Clone, Copy, Debug, PartialEq, is_macro::Is)]
|
|
pub enum FStringElementRef<'a> {
|
|
Expression(&'a crate::FStringExpressionElement),
|
|
Literal(&'a crate::FStringLiteralElement),
|
|
}
|
|
|
|
impl<'a> From<&'a FStringElement> for FStringElementRef<'a> {
|
|
fn from(node: &'a FStringElement) -> Self {
|
|
match node {
|
|
FStringElement::Expression(node) => FStringElementRef::Expression(node),
|
|
FStringElement::Literal(node) => FStringElementRef::Literal(node),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::FStringExpressionElement> for FStringElementRef<'a> {
|
|
fn from(node: &'a crate::FStringExpressionElement) -> Self {
|
|
Self::Expression(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::FStringLiteralElement> for FStringElementRef<'a> {
|
|
fn from(node: &'a crate::FStringLiteralElement) -> Self {
|
|
Self::Literal(node)
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for FStringElementRef<'_> {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
match self {
|
|
Self::Expression(node) => node.range(),
|
|
Self::Literal(node) => node.range(),
|
|
}
|
|
}
|
|
}
|
|
|
|
/// 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> {
|
|
MatchValue(&'a crate::PatternMatchValue),
|
|
MatchSingleton(&'a crate::PatternMatchSingleton),
|
|
MatchSequence(&'a crate::PatternMatchSequence),
|
|
MatchMapping(&'a crate::PatternMatchMapping),
|
|
MatchClass(&'a crate::PatternMatchClass),
|
|
MatchStar(&'a crate::PatternMatchStar),
|
|
MatchAs(&'a crate::PatternMatchAs),
|
|
MatchOr(&'a crate::PatternMatchOr),
|
|
}
|
|
|
|
impl<'a> From<&'a Pattern> for PatternRef<'a> {
|
|
fn from(node: &'a Pattern) -> Self {
|
|
match node {
|
|
Pattern::MatchValue(node) => PatternRef::MatchValue(node),
|
|
Pattern::MatchSingleton(node) => PatternRef::MatchSingleton(node),
|
|
Pattern::MatchSequence(node) => PatternRef::MatchSequence(node),
|
|
Pattern::MatchMapping(node) => PatternRef::MatchMapping(node),
|
|
Pattern::MatchClass(node) => PatternRef::MatchClass(node),
|
|
Pattern::MatchStar(node) => PatternRef::MatchStar(node),
|
|
Pattern::MatchAs(node) => PatternRef::MatchAs(node),
|
|
Pattern::MatchOr(node) => PatternRef::MatchOr(node),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::PatternMatchValue> for PatternRef<'a> {
|
|
fn from(node: &'a crate::PatternMatchValue) -> Self {
|
|
Self::MatchValue(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::PatternMatchSingleton> for PatternRef<'a> {
|
|
fn from(node: &'a crate::PatternMatchSingleton) -> Self {
|
|
Self::MatchSingleton(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::PatternMatchSequence> for PatternRef<'a> {
|
|
fn from(node: &'a crate::PatternMatchSequence) -> Self {
|
|
Self::MatchSequence(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::PatternMatchMapping> for PatternRef<'a> {
|
|
fn from(node: &'a crate::PatternMatchMapping) -> Self {
|
|
Self::MatchMapping(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::PatternMatchClass> for PatternRef<'a> {
|
|
fn from(node: &'a crate::PatternMatchClass) -> Self {
|
|
Self::MatchClass(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::PatternMatchStar> for PatternRef<'a> {
|
|
fn from(node: &'a crate::PatternMatchStar) -> Self {
|
|
Self::MatchStar(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::PatternMatchAs> for PatternRef<'a> {
|
|
fn from(node: &'a crate::PatternMatchAs) -> Self {
|
|
Self::MatchAs(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::PatternMatchOr> for PatternRef<'a> {
|
|
fn from(node: &'a crate::PatternMatchOr) -> Self {
|
|
Self::MatchOr(node)
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for PatternRef<'_> {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
match self {
|
|
Self::MatchValue(node) => node.range(),
|
|
Self::MatchSingleton(node) => node.range(),
|
|
Self::MatchSequence(node) => node.range(),
|
|
Self::MatchMapping(node) => node.range(),
|
|
Self::MatchClass(node) => node.range(),
|
|
Self::MatchStar(node) => node.range(),
|
|
Self::MatchAs(node) => node.range(),
|
|
Self::MatchOr(node) => node.range(),
|
|
}
|
|
}
|
|
}
|
|
|
|
/// 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> {
|
|
TypeVar(&'a crate::TypeParamTypeVar),
|
|
TypeVarTuple(&'a crate::TypeParamTypeVarTuple),
|
|
ParamSpec(&'a crate::TypeParamParamSpec),
|
|
}
|
|
|
|
impl<'a> From<&'a TypeParam> for TypeParamRef<'a> {
|
|
fn from(node: &'a TypeParam) -> Self {
|
|
match node {
|
|
TypeParam::TypeVar(node) => TypeParamRef::TypeVar(node),
|
|
TypeParam::TypeVarTuple(node) => TypeParamRef::TypeVarTuple(node),
|
|
TypeParam::ParamSpec(node) => TypeParamRef::ParamSpec(node),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::TypeParamTypeVar> for TypeParamRef<'a> {
|
|
fn from(node: &'a crate::TypeParamTypeVar) -> Self {
|
|
Self::TypeVar(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::TypeParamTypeVarTuple> for TypeParamRef<'a> {
|
|
fn from(node: &'a crate::TypeParamTypeVarTuple) -> Self {
|
|
Self::TypeVarTuple(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::TypeParamParamSpec> for TypeParamRef<'a> {
|
|
fn from(node: &'a crate::TypeParamParamSpec) -> Self {
|
|
Self::ParamSpec(node)
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for TypeParamRef<'_> {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
match self {
|
|
Self::TypeVar(node) => node.range(),
|
|
Self::TypeVarTuple(node) => node.range(),
|
|
Self::ParamSpec(node) => node.range(),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Copy, Clone, Debug, is_macro::Is, PartialEq)]
|
|
pub enum AnyNodeRef<'a> {
|
|
ModModule(&'a crate::ModModule),
|
|
ModExpression(&'a crate::ModExpression),
|
|
StmtFunctionDef(&'a crate::StmtFunctionDef),
|
|
StmtClassDef(&'a crate::StmtClassDef),
|
|
StmtReturn(&'a crate::StmtReturn),
|
|
StmtDelete(&'a crate::StmtDelete),
|
|
StmtTypeAlias(&'a crate::StmtTypeAlias),
|
|
StmtAssign(&'a crate::StmtAssign),
|
|
StmtAugAssign(&'a crate::StmtAugAssign),
|
|
StmtAnnAssign(&'a crate::StmtAnnAssign),
|
|
StmtFor(&'a crate::StmtFor),
|
|
StmtWhile(&'a crate::StmtWhile),
|
|
StmtIf(&'a crate::StmtIf),
|
|
StmtWith(&'a crate::StmtWith),
|
|
StmtMatch(&'a crate::StmtMatch),
|
|
StmtRaise(&'a crate::StmtRaise),
|
|
StmtTry(&'a crate::StmtTry),
|
|
StmtAssert(&'a crate::StmtAssert),
|
|
StmtImport(&'a crate::StmtImport),
|
|
StmtImportFrom(&'a crate::StmtImportFrom),
|
|
StmtGlobal(&'a crate::StmtGlobal),
|
|
StmtNonlocal(&'a crate::StmtNonlocal),
|
|
StmtExpr(&'a crate::StmtExpr),
|
|
StmtPass(&'a crate::StmtPass),
|
|
StmtBreak(&'a crate::StmtBreak),
|
|
StmtContinue(&'a crate::StmtContinue),
|
|
StmtIpyEscapeCommand(&'a crate::StmtIpyEscapeCommand),
|
|
ExprBoolOp(&'a crate::ExprBoolOp),
|
|
ExprNamed(&'a crate::ExprNamed),
|
|
ExprBinOp(&'a crate::ExprBinOp),
|
|
ExprUnaryOp(&'a crate::ExprUnaryOp),
|
|
ExprLambda(&'a crate::ExprLambda),
|
|
ExprIf(&'a crate::ExprIf),
|
|
ExprDict(&'a crate::ExprDict),
|
|
ExprSet(&'a crate::ExprSet),
|
|
ExprListComp(&'a crate::ExprListComp),
|
|
ExprSetComp(&'a crate::ExprSetComp),
|
|
ExprDictComp(&'a crate::ExprDictComp),
|
|
ExprGenerator(&'a crate::ExprGenerator),
|
|
ExprAwait(&'a crate::ExprAwait),
|
|
ExprYield(&'a crate::ExprYield),
|
|
ExprYieldFrom(&'a crate::ExprYieldFrom),
|
|
ExprCompare(&'a crate::ExprCompare),
|
|
ExprCall(&'a crate::ExprCall),
|
|
ExprFString(&'a crate::ExprFString),
|
|
ExprStringLiteral(&'a crate::ExprStringLiteral),
|
|
ExprBytesLiteral(&'a crate::ExprBytesLiteral),
|
|
ExprNumberLiteral(&'a crate::ExprNumberLiteral),
|
|
ExprBooleanLiteral(&'a crate::ExprBooleanLiteral),
|
|
ExprNoneLiteral(&'a crate::ExprNoneLiteral),
|
|
ExprEllipsisLiteral(&'a crate::ExprEllipsisLiteral),
|
|
ExprAttribute(&'a crate::ExprAttribute),
|
|
ExprSubscript(&'a crate::ExprSubscript),
|
|
ExprStarred(&'a crate::ExprStarred),
|
|
ExprName(&'a crate::ExprName),
|
|
ExprList(&'a crate::ExprList),
|
|
ExprTuple(&'a crate::ExprTuple),
|
|
ExprSlice(&'a crate::ExprSlice),
|
|
ExprIpyEscapeCommand(&'a crate::ExprIpyEscapeCommand),
|
|
ExceptHandlerExceptHandler(&'a crate::ExceptHandlerExceptHandler),
|
|
FStringExpressionElement(&'a crate::FStringExpressionElement),
|
|
FStringLiteralElement(&'a crate::FStringLiteralElement),
|
|
PatternMatchValue(&'a crate::PatternMatchValue),
|
|
PatternMatchSingleton(&'a crate::PatternMatchSingleton),
|
|
PatternMatchSequence(&'a crate::PatternMatchSequence),
|
|
PatternMatchMapping(&'a crate::PatternMatchMapping),
|
|
PatternMatchClass(&'a crate::PatternMatchClass),
|
|
PatternMatchStar(&'a crate::PatternMatchStar),
|
|
PatternMatchAs(&'a crate::PatternMatchAs),
|
|
PatternMatchOr(&'a crate::PatternMatchOr),
|
|
TypeParamTypeVar(&'a crate::TypeParamTypeVar),
|
|
TypeParamTypeVarTuple(&'a crate::TypeParamTypeVarTuple),
|
|
TypeParamParamSpec(&'a crate::TypeParamParamSpec),
|
|
FStringFormatSpec(&'a crate::FStringFormatSpec),
|
|
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),
|
|
StringLiteral(&'a crate::StringLiteral),
|
|
BytesLiteral(&'a crate::BytesLiteral),
|
|
Identifier(&'a crate::Identifier),
|
|
}
|
|
|
|
impl<'a> From<&'a Mod> for AnyNodeRef<'a> {
|
|
fn from(node: &'a Mod) -> AnyNodeRef<'a> {
|
|
match node {
|
|
Mod::Module(node) => AnyNodeRef::ModModule(node),
|
|
Mod::Expression(node) => AnyNodeRef::ModExpression(node),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<ModRef<'a>> for AnyNodeRef<'a> {
|
|
fn from(node: ModRef<'a>) -> AnyNodeRef<'a> {
|
|
match node {
|
|
ModRef::Module(node) => AnyNodeRef::ModModule(node),
|
|
ModRef::Expression(node) => AnyNodeRef::ModExpression(node),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> AnyNodeRef<'a> {
|
|
pub fn as_mod_ref(self) -> Option<ModRef<'a>> {
|
|
match self {
|
|
Self::ModModule(node) => Some(ModRef::Module(node)),
|
|
Self::ModExpression(node) => Some(ModRef::Expression(node)),
|
|
|
|
_ => None,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a Stmt> for AnyNodeRef<'a> {
|
|
fn from(node: &'a Stmt) -> AnyNodeRef<'a> {
|
|
match node {
|
|
Stmt::FunctionDef(node) => AnyNodeRef::StmtFunctionDef(node),
|
|
Stmt::ClassDef(node) => AnyNodeRef::StmtClassDef(node),
|
|
Stmt::Return(node) => AnyNodeRef::StmtReturn(node),
|
|
Stmt::Delete(node) => AnyNodeRef::StmtDelete(node),
|
|
Stmt::TypeAlias(node) => AnyNodeRef::StmtTypeAlias(node),
|
|
Stmt::Assign(node) => AnyNodeRef::StmtAssign(node),
|
|
Stmt::AugAssign(node) => AnyNodeRef::StmtAugAssign(node),
|
|
Stmt::AnnAssign(node) => AnyNodeRef::StmtAnnAssign(node),
|
|
Stmt::For(node) => AnyNodeRef::StmtFor(node),
|
|
Stmt::While(node) => AnyNodeRef::StmtWhile(node),
|
|
Stmt::If(node) => AnyNodeRef::StmtIf(node),
|
|
Stmt::With(node) => AnyNodeRef::StmtWith(node),
|
|
Stmt::Match(node) => AnyNodeRef::StmtMatch(node),
|
|
Stmt::Raise(node) => AnyNodeRef::StmtRaise(node),
|
|
Stmt::Try(node) => AnyNodeRef::StmtTry(node),
|
|
Stmt::Assert(node) => AnyNodeRef::StmtAssert(node),
|
|
Stmt::Import(node) => AnyNodeRef::StmtImport(node),
|
|
Stmt::ImportFrom(node) => AnyNodeRef::StmtImportFrom(node),
|
|
Stmt::Global(node) => AnyNodeRef::StmtGlobal(node),
|
|
Stmt::Nonlocal(node) => AnyNodeRef::StmtNonlocal(node),
|
|
Stmt::Expr(node) => AnyNodeRef::StmtExpr(node),
|
|
Stmt::Pass(node) => AnyNodeRef::StmtPass(node),
|
|
Stmt::Break(node) => AnyNodeRef::StmtBreak(node),
|
|
Stmt::Continue(node) => AnyNodeRef::StmtContinue(node),
|
|
Stmt::IpyEscapeCommand(node) => AnyNodeRef::StmtIpyEscapeCommand(node),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<StmtRef<'a>> for AnyNodeRef<'a> {
|
|
fn from(node: StmtRef<'a>) -> AnyNodeRef<'a> {
|
|
match node {
|
|
StmtRef::FunctionDef(node) => AnyNodeRef::StmtFunctionDef(node),
|
|
StmtRef::ClassDef(node) => AnyNodeRef::StmtClassDef(node),
|
|
StmtRef::Return(node) => AnyNodeRef::StmtReturn(node),
|
|
StmtRef::Delete(node) => AnyNodeRef::StmtDelete(node),
|
|
StmtRef::TypeAlias(node) => AnyNodeRef::StmtTypeAlias(node),
|
|
StmtRef::Assign(node) => AnyNodeRef::StmtAssign(node),
|
|
StmtRef::AugAssign(node) => AnyNodeRef::StmtAugAssign(node),
|
|
StmtRef::AnnAssign(node) => AnyNodeRef::StmtAnnAssign(node),
|
|
StmtRef::For(node) => AnyNodeRef::StmtFor(node),
|
|
StmtRef::While(node) => AnyNodeRef::StmtWhile(node),
|
|
StmtRef::If(node) => AnyNodeRef::StmtIf(node),
|
|
StmtRef::With(node) => AnyNodeRef::StmtWith(node),
|
|
StmtRef::Match(node) => AnyNodeRef::StmtMatch(node),
|
|
StmtRef::Raise(node) => AnyNodeRef::StmtRaise(node),
|
|
StmtRef::Try(node) => AnyNodeRef::StmtTry(node),
|
|
StmtRef::Assert(node) => AnyNodeRef::StmtAssert(node),
|
|
StmtRef::Import(node) => AnyNodeRef::StmtImport(node),
|
|
StmtRef::ImportFrom(node) => AnyNodeRef::StmtImportFrom(node),
|
|
StmtRef::Global(node) => AnyNodeRef::StmtGlobal(node),
|
|
StmtRef::Nonlocal(node) => AnyNodeRef::StmtNonlocal(node),
|
|
StmtRef::Expr(node) => AnyNodeRef::StmtExpr(node),
|
|
StmtRef::Pass(node) => AnyNodeRef::StmtPass(node),
|
|
StmtRef::Break(node) => AnyNodeRef::StmtBreak(node),
|
|
StmtRef::Continue(node) => AnyNodeRef::StmtContinue(node),
|
|
StmtRef::IpyEscapeCommand(node) => AnyNodeRef::StmtIpyEscapeCommand(node),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> AnyNodeRef<'a> {
|
|
pub fn as_stmt_ref(self) -> Option<StmtRef<'a>> {
|
|
match self {
|
|
Self::StmtFunctionDef(node) => Some(StmtRef::FunctionDef(node)),
|
|
Self::StmtClassDef(node) => Some(StmtRef::ClassDef(node)),
|
|
Self::StmtReturn(node) => Some(StmtRef::Return(node)),
|
|
Self::StmtDelete(node) => Some(StmtRef::Delete(node)),
|
|
Self::StmtTypeAlias(node) => Some(StmtRef::TypeAlias(node)),
|
|
Self::StmtAssign(node) => Some(StmtRef::Assign(node)),
|
|
Self::StmtAugAssign(node) => Some(StmtRef::AugAssign(node)),
|
|
Self::StmtAnnAssign(node) => Some(StmtRef::AnnAssign(node)),
|
|
Self::StmtFor(node) => Some(StmtRef::For(node)),
|
|
Self::StmtWhile(node) => Some(StmtRef::While(node)),
|
|
Self::StmtIf(node) => Some(StmtRef::If(node)),
|
|
Self::StmtWith(node) => Some(StmtRef::With(node)),
|
|
Self::StmtMatch(node) => Some(StmtRef::Match(node)),
|
|
Self::StmtRaise(node) => Some(StmtRef::Raise(node)),
|
|
Self::StmtTry(node) => Some(StmtRef::Try(node)),
|
|
Self::StmtAssert(node) => Some(StmtRef::Assert(node)),
|
|
Self::StmtImport(node) => Some(StmtRef::Import(node)),
|
|
Self::StmtImportFrom(node) => Some(StmtRef::ImportFrom(node)),
|
|
Self::StmtGlobal(node) => Some(StmtRef::Global(node)),
|
|
Self::StmtNonlocal(node) => Some(StmtRef::Nonlocal(node)),
|
|
Self::StmtExpr(node) => Some(StmtRef::Expr(node)),
|
|
Self::StmtPass(node) => Some(StmtRef::Pass(node)),
|
|
Self::StmtBreak(node) => Some(StmtRef::Break(node)),
|
|
Self::StmtContinue(node) => Some(StmtRef::Continue(node)),
|
|
Self::StmtIpyEscapeCommand(node) => Some(StmtRef::IpyEscapeCommand(node)),
|
|
|
|
_ => None,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a Expr> for AnyNodeRef<'a> {
|
|
fn from(node: &'a Expr) -> AnyNodeRef<'a> {
|
|
match node {
|
|
Expr::BoolOp(node) => AnyNodeRef::ExprBoolOp(node),
|
|
Expr::Named(node) => AnyNodeRef::ExprNamed(node),
|
|
Expr::BinOp(node) => AnyNodeRef::ExprBinOp(node),
|
|
Expr::UnaryOp(node) => AnyNodeRef::ExprUnaryOp(node),
|
|
Expr::Lambda(node) => AnyNodeRef::ExprLambda(node),
|
|
Expr::If(node) => AnyNodeRef::ExprIf(node),
|
|
Expr::Dict(node) => AnyNodeRef::ExprDict(node),
|
|
Expr::Set(node) => AnyNodeRef::ExprSet(node),
|
|
Expr::ListComp(node) => AnyNodeRef::ExprListComp(node),
|
|
Expr::SetComp(node) => AnyNodeRef::ExprSetComp(node),
|
|
Expr::DictComp(node) => AnyNodeRef::ExprDictComp(node),
|
|
Expr::Generator(node) => AnyNodeRef::ExprGenerator(node),
|
|
Expr::Await(node) => AnyNodeRef::ExprAwait(node),
|
|
Expr::Yield(node) => AnyNodeRef::ExprYield(node),
|
|
Expr::YieldFrom(node) => AnyNodeRef::ExprYieldFrom(node),
|
|
Expr::Compare(node) => AnyNodeRef::ExprCompare(node),
|
|
Expr::Call(node) => AnyNodeRef::ExprCall(node),
|
|
Expr::FString(node) => AnyNodeRef::ExprFString(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),
|
|
Expr::Name(node) => AnyNodeRef::ExprName(node),
|
|
Expr::List(node) => AnyNodeRef::ExprList(node),
|
|
Expr::Tuple(node) => AnyNodeRef::ExprTuple(node),
|
|
Expr::Slice(node) => AnyNodeRef::ExprSlice(node),
|
|
Expr::IpyEscapeCommand(node) => AnyNodeRef::ExprIpyEscapeCommand(node),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<ExprRef<'a>> for AnyNodeRef<'a> {
|
|
fn from(node: ExprRef<'a>) -> AnyNodeRef<'a> {
|
|
match node {
|
|
ExprRef::BoolOp(node) => AnyNodeRef::ExprBoolOp(node),
|
|
ExprRef::Named(node) => AnyNodeRef::ExprNamed(node),
|
|
ExprRef::BinOp(node) => AnyNodeRef::ExprBinOp(node),
|
|
ExprRef::UnaryOp(node) => AnyNodeRef::ExprUnaryOp(node),
|
|
ExprRef::Lambda(node) => AnyNodeRef::ExprLambda(node),
|
|
ExprRef::If(node) => AnyNodeRef::ExprIf(node),
|
|
ExprRef::Dict(node) => AnyNodeRef::ExprDict(node),
|
|
ExprRef::Set(node) => AnyNodeRef::ExprSet(node),
|
|
ExprRef::ListComp(node) => AnyNodeRef::ExprListComp(node),
|
|
ExprRef::SetComp(node) => AnyNodeRef::ExprSetComp(node),
|
|
ExprRef::DictComp(node) => AnyNodeRef::ExprDictComp(node),
|
|
ExprRef::Generator(node) => AnyNodeRef::ExprGenerator(node),
|
|
ExprRef::Await(node) => AnyNodeRef::ExprAwait(node),
|
|
ExprRef::Yield(node) => AnyNodeRef::ExprYield(node),
|
|
ExprRef::YieldFrom(node) => AnyNodeRef::ExprYieldFrom(node),
|
|
ExprRef::Compare(node) => AnyNodeRef::ExprCompare(node),
|
|
ExprRef::Call(node) => AnyNodeRef::ExprCall(node),
|
|
ExprRef::FString(node) => AnyNodeRef::ExprFString(node),
|
|
ExprRef::StringLiteral(node) => AnyNodeRef::ExprStringLiteral(node),
|
|
ExprRef::BytesLiteral(node) => AnyNodeRef::ExprBytesLiteral(node),
|
|
ExprRef::NumberLiteral(node) => AnyNodeRef::ExprNumberLiteral(node),
|
|
ExprRef::BooleanLiteral(node) => AnyNodeRef::ExprBooleanLiteral(node),
|
|
ExprRef::NoneLiteral(node) => AnyNodeRef::ExprNoneLiteral(node),
|
|
ExprRef::EllipsisLiteral(node) => AnyNodeRef::ExprEllipsisLiteral(node),
|
|
ExprRef::Attribute(node) => AnyNodeRef::ExprAttribute(node),
|
|
ExprRef::Subscript(node) => AnyNodeRef::ExprSubscript(node),
|
|
ExprRef::Starred(node) => AnyNodeRef::ExprStarred(node),
|
|
ExprRef::Name(node) => AnyNodeRef::ExprName(node),
|
|
ExprRef::List(node) => AnyNodeRef::ExprList(node),
|
|
ExprRef::Tuple(node) => AnyNodeRef::ExprTuple(node),
|
|
ExprRef::Slice(node) => AnyNodeRef::ExprSlice(node),
|
|
ExprRef::IpyEscapeCommand(node) => AnyNodeRef::ExprIpyEscapeCommand(node),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> AnyNodeRef<'a> {
|
|
pub fn as_expr_ref(self) -> Option<ExprRef<'a>> {
|
|
match self {
|
|
Self::ExprBoolOp(node) => Some(ExprRef::BoolOp(node)),
|
|
Self::ExprNamed(node) => Some(ExprRef::Named(node)),
|
|
Self::ExprBinOp(node) => Some(ExprRef::BinOp(node)),
|
|
Self::ExprUnaryOp(node) => Some(ExprRef::UnaryOp(node)),
|
|
Self::ExprLambda(node) => Some(ExprRef::Lambda(node)),
|
|
Self::ExprIf(node) => Some(ExprRef::If(node)),
|
|
Self::ExprDict(node) => Some(ExprRef::Dict(node)),
|
|
Self::ExprSet(node) => Some(ExprRef::Set(node)),
|
|
Self::ExprListComp(node) => Some(ExprRef::ListComp(node)),
|
|
Self::ExprSetComp(node) => Some(ExprRef::SetComp(node)),
|
|
Self::ExprDictComp(node) => Some(ExprRef::DictComp(node)),
|
|
Self::ExprGenerator(node) => Some(ExprRef::Generator(node)),
|
|
Self::ExprAwait(node) => Some(ExprRef::Await(node)),
|
|
Self::ExprYield(node) => Some(ExprRef::Yield(node)),
|
|
Self::ExprYieldFrom(node) => Some(ExprRef::YieldFrom(node)),
|
|
Self::ExprCompare(node) => Some(ExprRef::Compare(node)),
|
|
Self::ExprCall(node) => Some(ExprRef::Call(node)),
|
|
Self::ExprFString(node) => Some(ExprRef::FString(node)),
|
|
Self::ExprStringLiteral(node) => Some(ExprRef::StringLiteral(node)),
|
|
Self::ExprBytesLiteral(node) => Some(ExprRef::BytesLiteral(node)),
|
|
Self::ExprNumberLiteral(node) => Some(ExprRef::NumberLiteral(node)),
|
|
Self::ExprBooleanLiteral(node) => Some(ExprRef::BooleanLiteral(node)),
|
|
Self::ExprNoneLiteral(node) => Some(ExprRef::NoneLiteral(node)),
|
|
Self::ExprEllipsisLiteral(node) => Some(ExprRef::EllipsisLiteral(node)),
|
|
Self::ExprAttribute(node) => Some(ExprRef::Attribute(node)),
|
|
Self::ExprSubscript(node) => Some(ExprRef::Subscript(node)),
|
|
Self::ExprStarred(node) => Some(ExprRef::Starred(node)),
|
|
Self::ExprName(node) => Some(ExprRef::Name(node)),
|
|
Self::ExprList(node) => Some(ExprRef::List(node)),
|
|
Self::ExprTuple(node) => Some(ExprRef::Tuple(node)),
|
|
Self::ExprSlice(node) => Some(ExprRef::Slice(node)),
|
|
Self::ExprIpyEscapeCommand(node) => Some(ExprRef::IpyEscapeCommand(node)),
|
|
|
|
_ => None,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a ExceptHandler> for AnyNodeRef<'a> {
|
|
fn from(node: &'a ExceptHandler) -> AnyNodeRef<'a> {
|
|
match node {
|
|
ExceptHandler::ExceptHandler(node) => AnyNodeRef::ExceptHandlerExceptHandler(node),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<ExceptHandlerRef<'a>> for AnyNodeRef<'a> {
|
|
fn from(node: ExceptHandlerRef<'a>) -> AnyNodeRef<'a> {
|
|
match node {
|
|
ExceptHandlerRef::ExceptHandler(node) => AnyNodeRef::ExceptHandlerExceptHandler(node),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> AnyNodeRef<'a> {
|
|
pub fn as_except_handler_ref(self) -> Option<ExceptHandlerRef<'a>> {
|
|
match self {
|
|
Self::ExceptHandlerExceptHandler(node) => Some(ExceptHandlerRef::ExceptHandler(node)),
|
|
|
|
_ => None,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a FStringElement> for AnyNodeRef<'a> {
|
|
fn from(node: &'a FStringElement) -> AnyNodeRef<'a> {
|
|
match node {
|
|
FStringElement::Expression(node) => AnyNodeRef::FStringExpressionElement(node),
|
|
FStringElement::Literal(node) => AnyNodeRef::FStringLiteralElement(node),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<FStringElementRef<'a>> for AnyNodeRef<'a> {
|
|
fn from(node: FStringElementRef<'a>) -> AnyNodeRef<'a> {
|
|
match node {
|
|
FStringElementRef::Expression(node) => AnyNodeRef::FStringExpressionElement(node),
|
|
FStringElementRef::Literal(node) => AnyNodeRef::FStringLiteralElement(node),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> AnyNodeRef<'a> {
|
|
pub fn as_f_string_element_ref(self) -> Option<FStringElementRef<'a>> {
|
|
match self {
|
|
Self::FStringExpressionElement(node) => Some(FStringElementRef::Expression(node)),
|
|
Self::FStringLiteralElement(node) => Some(FStringElementRef::Literal(node)),
|
|
|
|
_ => None,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a Pattern> for AnyNodeRef<'a> {
|
|
fn from(node: &'a Pattern) -> AnyNodeRef<'a> {
|
|
match node {
|
|
Pattern::MatchValue(node) => AnyNodeRef::PatternMatchValue(node),
|
|
Pattern::MatchSingleton(node) => AnyNodeRef::PatternMatchSingleton(node),
|
|
Pattern::MatchSequence(node) => AnyNodeRef::PatternMatchSequence(node),
|
|
Pattern::MatchMapping(node) => AnyNodeRef::PatternMatchMapping(node),
|
|
Pattern::MatchClass(node) => AnyNodeRef::PatternMatchClass(node),
|
|
Pattern::MatchStar(node) => AnyNodeRef::PatternMatchStar(node),
|
|
Pattern::MatchAs(node) => AnyNodeRef::PatternMatchAs(node),
|
|
Pattern::MatchOr(node) => AnyNodeRef::PatternMatchOr(node),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<PatternRef<'a>> for AnyNodeRef<'a> {
|
|
fn from(node: PatternRef<'a>) -> AnyNodeRef<'a> {
|
|
match node {
|
|
PatternRef::MatchValue(node) => AnyNodeRef::PatternMatchValue(node),
|
|
PatternRef::MatchSingleton(node) => AnyNodeRef::PatternMatchSingleton(node),
|
|
PatternRef::MatchSequence(node) => AnyNodeRef::PatternMatchSequence(node),
|
|
PatternRef::MatchMapping(node) => AnyNodeRef::PatternMatchMapping(node),
|
|
PatternRef::MatchClass(node) => AnyNodeRef::PatternMatchClass(node),
|
|
PatternRef::MatchStar(node) => AnyNodeRef::PatternMatchStar(node),
|
|
PatternRef::MatchAs(node) => AnyNodeRef::PatternMatchAs(node),
|
|
PatternRef::MatchOr(node) => AnyNodeRef::PatternMatchOr(node),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> AnyNodeRef<'a> {
|
|
pub fn as_pattern_ref(self) -> Option<PatternRef<'a>> {
|
|
match self {
|
|
Self::PatternMatchValue(node) => Some(PatternRef::MatchValue(node)),
|
|
Self::PatternMatchSingleton(node) => Some(PatternRef::MatchSingleton(node)),
|
|
Self::PatternMatchSequence(node) => Some(PatternRef::MatchSequence(node)),
|
|
Self::PatternMatchMapping(node) => Some(PatternRef::MatchMapping(node)),
|
|
Self::PatternMatchClass(node) => Some(PatternRef::MatchClass(node)),
|
|
Self::PatternMatchStar(node) => Some(PatternRef::MatchStar(node)),
|
|
Self::PatternMatchAs(node) => Some(PatternRef::MatchAs(node)),
|
|
Self::PatternMatchOr(node) => Some(PatternRef::MatchOr(node)),
|
|
|
|
_ => None,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a TypeParam> for AnyNodeRef<'a> {
|
|
fn from(node: &'a TypeParam) -> AnyNodeRef<'a> {
|
|
match node {
|
|
TypeParam::TypeVar(node) => AnyNodeRef::TypeParamTypeVar(node),
|
|
TypeParam::TypeVarTuple(node) => AnyNodeRef::TypeParamTypeVarTuple(node),
|
|
TypeParam::ParamSpec(node) => AnyNodeRef::TypeParamParamSpec(node),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<TypeParamRef<'a>> for AnyNodeRef<'a> {
|
|
fn from(node: TypeParamRef<'a>) -> AnyNodeRef<'a> {
|
|
match node {
|
|
TypeParamRef::TypeVar(node) => AnyNodeRef::TypeParamTypeVar(node),
|
|
TypeParamRef::TypeVarTuple(node) => AnyNodeRef::TypeParamTypeVarTuple(node),
|
|
TypeParamRef::ParamSpec(node) => AnyNodeRef::TypeParamParamSpec(node),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> AnyNodeRef<'a> {
|
|
pub fn as_type_param_ref(self) -> Option<TypeParamRef<'a>> {
|
|
match self {
|
|
Self::TypeParamTypeVar(node) => Some(TypeParamRef::TypeVar(node)),
|
|
Self::TypeParamTypeVarTuple(node) => Some(TypeParamRef::TypeVarTuple(node)),
|
|
Self::TypeParamParamSpec(node) => Some(TypeParamRef::ParamSpec(node)),
|
|
|
|
_ => None,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ModModule> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ModModule) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ModModule(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ModExpression> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ModExpression) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ModExpression(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtFunctionDef> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtFunctionDef) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtFunctionDef(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtClassDef> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtClassDef) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtClassDef(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtReturn> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtReturn) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtReturn(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtDelete> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtDelete) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtDelete(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtTypeAlias> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtTypeAlias) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtTypeAlias(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtAssign> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtAssign) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtAssign(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtAugAssign> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtAugAssign) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtAugAssign(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtAnnAssign> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtAnnAssign) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtAnnAssign(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtFor> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtFor) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtFor(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtWhile> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtWhile) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtWhile(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtIf> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtIf) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtIf(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtWith> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtWith) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtWith(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtMatch> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtMatch) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtMatch(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtRaise> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtRaise) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtRaise(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtTry> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtTry) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtTry(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtAssert> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtAssert) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtAssert(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtImport> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtImport) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtImport(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtImportFrom> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtImportFrom) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtImportFrom(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtGlobal> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtGlobal) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtGlobal(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtNonlocal> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtNonlocal) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtNonlocal(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtExpr> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtExpr) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtExpr(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtPass> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtPass) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtPass(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtBreak> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtBreak) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtBreak(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtContinue> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtContinue) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtContinue(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StmtIpyEscapeCommand> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StmtIpyEscapeCommand) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StmtIpyEscapeCommand(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprBoolOp> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprBoolOp) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprBoolOp(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprNamed> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprNamed) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprNamed(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprBinOp> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprBinOp) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprBinOp(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprUnaryOp> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprUnaryOp) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprUnaryOp(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprLambda> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprLambda) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprLambda(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprIf> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprIf) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprIf(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprDict> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprDict) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprDict(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprSet> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprSet) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprSet(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprListComp> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprListComp) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprListComp(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprSetComp> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprSetComp) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprSetComp(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprDictComp> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprDictComp) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprDictComp(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprGenerator> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprGenerator) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprGenerator(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprAwait> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprAwait) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprAwait(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprYield> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprYield) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprYield(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprYieldFrom> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprYieldFrom) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprYieldFrom(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprCompare> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprCompare) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprCompare(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprCall> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprCall) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprCall(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprFString> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprFString) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprFString(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprStringLiteral> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprStringLiteral) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprStringLiteral(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprBytesLiteral> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprBytesLiteral) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprBytesLiteral(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprNumberLiteral> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprNumberLiteral) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprNumberLiteral(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprBooleanLiteral> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprBooleanLiteral) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprBooleanLiteral(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprNoneLiteral> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprNoneLiteral) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprNoneLiteral(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprEllipsisLiteral> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprEllipsisLiteral) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprEllipsisLiteral(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprAttribute> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprAttribute) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprAttribute(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprSubscript> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprSubscript) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprSubscript(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprStarred> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprStarred) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprStarred(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprName> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprName) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprName(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprList> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprList) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprList(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprTuple> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprTuple) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprTuple(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprSlice> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprSlice) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprSlice(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExprIpyEscapeCommand> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExprIpyEscapeCommand) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExprIpyEscapeCommand(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ExceptHandlerExceptHandler> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ExceptHandlerExceptHandler) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ExceptHandlerExceptHandler(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::FStringExpressionElement> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::FStringExpressionElement) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::FStringExpressionElement(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::FStringLiteralElement> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::FStringLiteralElement) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::FStringLiteralElement(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::PatternMatchValue> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::PatternMatchValue) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::PatternMatchValue(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::PatternMatchSingleton> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::PatternMatchSingleton) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::PatternMatchSingleton(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::PatternMatchSequence> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::PatternMatchSequence) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::PatternMatchSequence(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::PatternMatchMapping> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::PatternMatchMapping) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::PatternMatchMapping(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::PatternMatchClass> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::PatternMatchClass) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::PatternMatchClass(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::PatternMatchStar> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::PatternMatchStar) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::PatternMatchStar(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::PatternMatchAs> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::PatternMatchAs) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::PatternMatchAs(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::PatternMatchOr> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::PatternMatchOr) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::PatternMatchOr(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::TypeParamTypeVar> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::TypeParamTypeVar) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::TypeParamTypeVar(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::TypeParamTypeVarTuple> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::TypeParamTypeVarTuple) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::TypeParamTypeVarTuple(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::TypeParamParamSpec> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::TypeParamParamSpec) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::TypeParamParamSpec(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::FStringFormatSpec> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::FStringFormatSpec) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::FStringFormatSpec(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::PatternArguments> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::PatternArguments) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::PatternArguments(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::PatternKeyword> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::PatternKeyword) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::PatternKeyword(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::Comprehension> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::Comprehension) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::Comprehension(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::Arguments> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::Arguments) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::Arguments(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::Parameters> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::Parameters) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::Parameters(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::Parameter> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::Parameter) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::Parameter(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ParameterWithDefault> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ParameterWithDefault) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ParameterWithDefault(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::Keyword> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::Keyword) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::Keyword(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::Alias> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::Alias) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::Alias(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::WithItem> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::WithItem) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::WithItem(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::MatchCase> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::MatchCase) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::MatchCase(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::Decorator> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::Decorator) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::Decorator(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::ElifElseClause> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::ElifElseClause) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::ElifElseClause(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::TypeParams> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::TypeParams) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::TypeParams(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::FString> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::FString) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::FString(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::StringLiteral> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::StringLiteral) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::StringLiteral(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::BytesLiteral> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::BytesLiteral) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::BytesLiteral(node)
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a crate::Identifier> for AnyNodeRef<'a> {
|
|
fn from(node: &'a crate::Identifier) -> AnyNodeRef<'a> {
|
|
AnyNodeRef::Identifier(node)
|
|
}
|
|
}
|
|
|
|
impl ruff_text_size::Ranged for AnyNodeRef<'_> {
|
|
fn range(&self) -> ruff_text_size::TextRange {
|
|
match self {
|
|
AnyNodeRef::ModModule(node) => node.range(),
|
|
AnyNodeRef::ModExpression(node) => node.range(),
|
|
AnyNodeRef::StmtFunctionDef(node) => node.range(),
|
|
AnyNodeRef::StmtClassDef(node) => node.range(),
|
|
AnyNodeRef::StmtReturn(node) => node.range(),
|
|
AnyNodeRef::StmtDelete(node) => node.range(),
|
|
AnyNodeRef::StmtTypeAlias(node) => node.range(),
|
|
AnyNodeRef::StmtAssign(node) => node.range(),
|
|
AnyNodeRef::StmtAugAssign(node) => node.range(),
|
|
AnyNodeRef::StmtAnnAssign(node) => node.range(),
|
|
AnyNodeRef::StmtFor(node) => node.range(),
|
|
AnyNodeRef::StmtWhile(node) => node.range(),
|
|
AnyNodeRef::StmtIf(node) => node.range(),
|
|
AnyNodeRef::StmtWith(node) => node.range(),
|
|
AnyNodeRef::StmtMatch(node) => node.range(),
|
|
AnyNodeRef::StmtRaise(node) => node.range(),
|
|
AnyNodeRef::StmtTry(node) => node.range(),
|
|
AnyNodeRef::StmtAssert(node) => node.range(),
|
|
AnyNodeRef::StmtImport(node) => node.range(),
|
|
AnyNodeRef::StmtImportFrom(node) => node.range(),
|
|
AnyNodeRef::StmtGlobal(node) => node.range(),
|
|
AnyNodeRef::StmtNonlocal(node) => node.range(),
|
|
AnyNodeRef::StmtExpr(node) => node.range(),
|
|
AnyNodeRef::StmtPass(node) => node.range(),
|
|
AnyNodeRef::StmtBreak(node) => node.range(),
|
|
AnyNodeRef::StmtContinue(node) => node.range(),
|
|
AnyNodeRef::StmtIpyEscapeCommand(node) => node.range(),
|
|
AnyNodeRef::ExprBoolOp(node) => node.range(),
|
|
AnyNodeRef::ExprNamed(node) => node.range(),
|
|
AnyNodeRef::ExprBinOp(node) => node.range(),
|
|
AnyNodeRef::ExprUnaryOp(node) => node.range(),
|
|
AnyNodeRef::ExprLambda(node) => node.range(),
|
|
AnyNodeRef::ExprIf(node) => node.range(),
|
|
AnyNodeRef::ExprDict(node) => node.range(),
|
|
AnyNodeRef::ExprSet(node) => node.range(),
|
|
AnyNodeRef::ExprListComp(node) => node.range(),
|
|
AnyNodeRef::ExprSetComp(node) => node.range(),
|
|
AnyNodeRef::ExprDictComp(node) => node.range(),
|
|
AnyNodeRef::ExprGenerator(node) => node.range(),
|
|
AnyNodeRef::ExprAwait(node) => node.range(),
|
|
AnyNodeRef::ExprYield(node) => node.range(),
|
|
AnyNodeRef::ExprYieldFrom(node) => node.range(),
|
|
AnyNodeRef::ExprCompare(node) => node.range(),
|
|
AnyNodeRef::ExprCall(node) => node.range(),
|
|
AnyNodeRef::ExprFString(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(),
|
|
AnyNodeRef::ExprName(node) => node.range(),
|
|
AnyNodeRef::ExprList(node) => node.range(),
|
|
AnyNodeRef::ExprTuple(node) => node.range(),
|
|
AnyNodeRef::ExprSlice(node) => node.range(),
|
|
AnyNodeRef::ExprIpyEscapeCommand(node) => node.range(),
|
|
AnyNodeRef::ExceptHandlerExceptHandler(node) => node.range(),
|
|
AnyNodeRef::FStringExpressionElement(node) => node.range(),
|
|
AnyNodeRef::FStringLiteralElement(node) => node.range(),
|
|
AnyNodeRef::PatternMatchValue(node) => node.range(),
|
|
AnyNodeRef::PatternMatchSingleton(node) => node.range(),
|
|
AnyNodeRef::PatternMatchSequence(node) => node.range(),
|
|
AnyNodeRef::PatternMatchMapping(node) => node.range(),
|
|
AnyNodeRef::PatternMatchClass(node) => node.range(),
|
|
AnyNodeRef::PatternMatchStar(node) => node.range(),
|
|
AnyNodeRef::PatternMatchAs(node) => node.range(),
|
|
AnyNodeRef::PatternMatchOr(node) => node.range(),
|
|
AnyNodeRef::TypeParamTypeVar(node) => node.range(),
|
|
AnyNodeRef::TypeParamTypeVarTuple(node) => node.range(),
|
|
AnyNodeRef::TypeParamParamSpec(node) => node.range(),
|
|
AnyNodeRef::FStringFormatSpec(node) => node.range(),
|
|
AnyNodeRef::PatternArguments(node) => node.range(),
|
|
AnyNodeRef::PatternKeyword(node) => node.range(),
|
|
AnyNodeRef::Comprehension(node) => node.range(),
|
|
AnyNodeRef::Arguments(node) => node.range(),
|
|
AnyNodeRef::Parameters(node) => node.range(),
|
|
AnyNodeRef::Parameter(node) => node.range(),
|
|
AnyNodeRef::ParameterWithDefault(node) => node.range(),
|
|
AnyNodeRef::Keyword(node) => node.range(),
|
|
AnyNodeRef::Alias(node) => node.range(),
|
|
AnyNodeRef::WithItem(node) => node.range(),
|
|
AnyNodeRef::MatchCase(node) => node.range(),
|
|
AnyNodeRef::Decorator(node) => node.range(),
|
|
AnyNodeRef::ElifElseClause(node) => node.range(),
|
|
AnyNodeRef::TypeParams(node) => node.range(),
|
|
AnyNodeRef::FString(node) => node.range(),
|
|
AnyNodeRef::StringLiteral(node) => node.range(),
|
|
AnyNodeRef::BytesLiteral(node) => node.range(),
|
|
AnyNodeRef::Identifier(node) => node.range(),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl AnyNodeRef<'_> {
|
|
pub fn as_ptr(&self) -> std::ptr::NonNull<()> {
|
|
match self {
|
|
AnyNodeRef::ModModule(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ModExpression(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtFunctionDef(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtClassDef(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtReturn(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtDelete(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtTypeAlias(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtAssign(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtAugAssign(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtAnnAssign(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtFor(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtWhile(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtIf(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtWith(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtMatch(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtRaise(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtTry(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtAssert(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtImport(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtImportFrom(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtGlobal(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtNonlocal(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtExpr(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtPass(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtBreak(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtContinue(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StmtIpyEscapeCommand(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprBoolOp(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprNamed(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprBinOp(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprUnaryOp(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprLambda(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprIf(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprDict(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprSet(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprListComp(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprSetComp(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprDictComp(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprGenerator(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprAwait(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprYield(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprYieldFrom(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprCompare(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprCall(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprFString(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprStringLiteral(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprBytesLiteral(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprNumberLiteral(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprBooleanLiteral(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprNoneLiteral(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprEllipsisLiteral(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprAttribute(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprSubscript(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprStarred(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprName(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprList(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprTuple(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprSlice(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExprIpyEscapeCommand(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ExceptHandlerExceptHandler(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::FStringExpressionElement(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::FStringLiteralElement(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::PatternMatchValue(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::PatternMatchSingleton(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::PatternMatchSequence(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::PatternMatchMapping(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::PatternMatchClass(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::PatternMatchStar(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::PatternMatchAs(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::PatternMatchOr(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::TypeParamTypeVar(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::TypeParamTypeVarTuple(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::TypeParamParamSpec(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::FStringFormatSpec(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::PatternArguments(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::PatternKeyword(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::Comprehension(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::Arguments(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::Parameters(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::Parameter(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ParameterWithDefault(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::Keyword(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::Alias(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::WithItem(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::MatchCase(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::Decorator(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::ElifElseClause(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::TypeParams(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::FString(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::StringLiteral(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::BytesLiteral(node) => std::ptr::NonNull::from(*node).cast(),
|
|
AnyNodeRef::Identifier(node) => std::ptr::NonNull::from(*node).cast(),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> AnyNodeRef<'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 {
|
|
AnyNodeRef::ModModule(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ModExpression(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtFunctionDef(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtClassDef(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtReturn(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtDelete(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtTypeAlias(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtAssign(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtAugAssign(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtAnnAssign(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtFor(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtWhile(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtIf(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtWith(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtMatch(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtRaise(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtTry(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtAssert(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtImport(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtImportFrom(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtGlobal(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtNonlocal(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtExpr(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtPass(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtBreak(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtContinue(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StmtIpyEscapeCommand(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprBoolOp(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprNamed(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprBinOp(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprUnaryOp(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprLambda(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprIf(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprDict(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprSet(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprListComp(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprSetComp(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprDictComp(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprGenerator(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprAwait(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprYield(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprYieldFrom(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprCompare(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprCall(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprFString(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprStringLiteral(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprBytesLiteral(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprNumberLiteral(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprBooleanLiteral(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprNoneLiteral(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprEllipsisLiteral(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprAttribute(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprSubscript(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprStarred(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprName(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprList(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprTuple(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprSlice(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExprIpyEscapeCommand(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ExceptHandlerExceptHandler(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::FStringExpressionElement(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::FStringLiteralElement(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::PatternMatchValue(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::PatternMatchSingleton(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::PatternMatchSequence(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::PatternMatchMapping(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::PatternMatchClass(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::PatternMatchStar(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::PatternMatchAs(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::PatternMatchOr(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::TypeParamTypeVar(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::TypeParamTypeVarTuple(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::TypeParamParamSpec(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::FStringFormatSpec(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::PatternArguments(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::PatternKeyword(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::Comprehension(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::Arguments(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::Parameters(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::Parameter(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ParameterWithDefault(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::Keyword(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::Alias(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::WithItem(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::MatchCase(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::Decorator(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::ElifElseClause(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::TypeParams(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::FString(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::StringLiteral(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::BytesLiteral(node) => node.visit_source_order(visitor),
|
|
AnyNodeRef::Identifier(node) => node.visit_source_order(visitor),
|
|
}
|
|
}
|
|
}
|
|
|
|
impl AnyNodeRef<'_> {
|
|
pub const fn is_module(self) -> bool {
|
|
matches!(
|
|
self,
|
|
AnyNodeRef::ModModule(_) | AnyNodeRef::ModExpression(_)
|
|
)
|
|
}
|
|
}
|
|
|
|
impl AnyNodeRef<'_> {
|
|
pub const fn is_statement(self) -> bool {
|
|
matches!(
|
|
self,
|
|
AnyNodeRef::StmtFunctionDef(_)
|
|
| AnyNodeRef::StmtClassDef(_)
|
|
| AnyNodeRef::StmtReturn(_)
|
|
| AnyNodeRef::StmtDelete(_)
|
|
| AnyNodeRef::StmtTypeAlias(_)
|
|
| AnyNodeRef::StmtAssign(_)
|
|
| AnyNodeRef::StmtAugAssign(_)
|
|
| AnyNodeRef::StmtAnnAssign(_)
|
|
| AnyNodeRef::StmtFor(_)
|
|
| AnyNodeRef::StmtWhile(_)
|
|
| AnyNodeRef::StmtIf(_)
|
|
| AnyNodeRef::StmtWith(_)
|
|
| AnyNodeRef::StmtMatch(_)
|
|
| AnyNodeRef::StmtRaise(_)
|
|
| AnyNodeRef::StmtTry(_)
|
|
| AnyNodeRef::StmtAssert(_)
|
|
| AnyNodeRef::StmtImport(_)
|
|
| AnyNodeRef::StmtImportFrom(_)
|
|
| AnyNodeRef::StmtGlobal(_)
|
|
| AnyNodeRef::StmtNonlocal(_)
|
|
| AnyNodeRef::StmtExpr(_)
|
|
| AnyNodeRef::StmtPass(_)
|
|
| AnyNodeRef::StmtBreak(_)
|
|
| AnyNodeRef::StmtContinue(_)
|
|
| AnyNodeRef::StmtIpyEscapeCommand(_)
|
|
)
|
|
}
|
|
}
|
|
|
|
impl AnyNodeRef<'_> {
|
|
pub const fn is_expression(self) -> bool {
|
|
matches!(
|
|
self,
|
|
AnyNodeRef::ExprBoolOp(_)
|
|
| AnyNodeRef::ExprNamed(_)
|
|
| AnyNodeRef::ExprBinOp(_)
|
|
| AnyNodeRef::ExprUnaryOp(_)
|
|
| AnyNodeRef::ExprLambda(_)
|
|
| AnyNodeRef::ExprIf(_)
|
|
| AnyNodeRef::ExprDict(_)
|
|
| AnyNodeRef::ExprSet(_)
|
|
| AnyNodeRef::ExprListComp(_)
|
|
| AnyNodeRef::ExprSetComp(_)
|
|
| AnyNodeRef::ExprDictComp(_)
|
|
| AnyNodeRef::ExprGenerator(_)
|
|
| AnyNodeRef::ExprAwait(_)
|
|
| AnyNodeRef::ExprYield(_)
|
|
| AnyNodeRef::ExprYieldFrom(_)
|
|
| AnyNodeRef::ExprCompare(_)
|
|
| AnyNodeRef::ExprCall(_)
|
|
| AnyNodeRef::ExprFString(_)
|
|
| AnyNodeRef::ExprStringLiteral(_)
|
|
| AnyNodeRef::ExprBytesLiteral(_)
|
|
| AnyNodeRef::ExprNumberLiteral(_)
|
|
| AnyNodeRef::ExprBooleanLiteral(_)
|
|
| AnyNodeRef::ExprNoneLiteral(_)
|
|
| AnyNodeRef::ExprEllipsisLiteral(_)
|
|
| AnyNodeRef::ExprAttribute(_)
|
|
| AnyNodeRef::ExprSubscript(_)
|
|
| AnyNodeRef::ExprStarred(_)
|
|
| AnyNodeRef::ExprName(_)
|
|
| AnyNodeRef::ExprList(_)
|
|
| AnyNodeRef::ExprTuple(_)
|
|
| AnyNodeRef::ExprSlice(_)
|
|
| AnyNodeRef::ExprIpyEscapeCommand(_)
|
|
)
|
|
}
|
|
}
|
|
|
|
impl AnyNodeRef<'_> {
|
|
pub const fn is_except_handler(self) -> bool {
|
|
matches!(self, AnyNodeRef::ExceptHandlerExceptHandler(_))
|
|
}
|
|
}
|
|
|
|
impl AnyNodeRef<'_> {
|
|
pub const fn is_f_string_element(self) -> bool {
|
|
matches!(
|
|
self,
|
|
AnyNodeRef::FStringExpressionElement(_) | AnyNodeRef::FStringLiteralElement(_)
|
|
)
|
|
}
|
|
}
|
|
|
|
impl AnyNodeRef<'_> {
|
|
pub const fn is_pattern(self) -> bool {
|
|
matches!(
|
|
self,
|
|
AnyNodeRef::PatternMatchValue(_)
|
|
| AnyNodeRef::PatternMatchSingleton(_)
|
|
| AnyNodeRef::PatternMatchSequence(_)
|
|
| AnyNodeRef::PatternMatchMapping(_)
|
|
| AnyNodeRef::PatternMatchClass(_)
|
|
| AnyNodeRef::PatternMatchStar(_)
|
|
| AnyNodeRef::PatternMatchAs(_)
|
|
| AnyNodeRef::PatternMatchOr(_)
|
|
)
|
|
}
|
|
}
|
|
|
|
impl AnyNodeRef<'_> {
|
|
pub const fn is_type_param(self) -> bool {
|
|
matches!(
|
|
self,
|
|
AnyNodeRef::TypeParamTypeVar(_)
|
|
| AnyNodeRef::TypeParamTypeVarTuple(_)
|
|
| AnyNodeRef::TypeParamParamSpec(_)
|
|
)
|
|
}
|
|
}
|
|
|
|
#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
|
|
pub enum NodeKind {
|
|
ModModule,
|
|
ModExpression,
|
|
StmtFunctionDef,
|
|
StmtClassDef,
|
|
StmtReturn,
|
|
StmtDelete,
|
|
StmtTypeAlias,
|
|
StmtAssign,
|
|
StmtAugAssign,
|
|
StmtAnnAssign,
|
|
StmtFor,
|
|
StmtWhile,
|
|
StmtIf,
|
|
StmtWith,
|
|
StmtMatch,
|
|
StmtRaise,
|
|
StmtTry,
|
|
StmtAssert,
|
|
StmtImport,
|
|
StmtImportFrom,
|
|
StmtGlobal,
|
|
StmtNonlocal,
|
|
StmtExpr,
|
|
StmtPass,
|
|
StmtBreak,
|
|
StmtContinue,
|
|
StmtIpyEscapeCommand,
|
|
ExprBoolOp,
|
|
ExprNamed,
|
|
ExprBinOp,
|
|
ExprUnaryOp,
|
|
ExprLambda,
|
|
ExprIf,
|
|
ExprDict,
|
|
ExprSet,
|
|
ExprListComp,
|
|
ExprSetComp,
|
|
ExprDictComp,
|
|
ExprGenerator,
|
|
ExprAwait,
|
|
ExprYield,
|
|
ExprYieldFrom,
|
|
ExprCompare,
|
|
ExprCall,
|
|
ExprFString,
|
|
ExprStringLiteral,
|
|
ExprBytesLiteral,
|
|
ExprNumberLiteral,
|
|
ExprBooleanLiteral,
|
|
ExprNoneLiteral,
|
|
ExprEllipsisLiteral,
|
|
ExprAttribute,
|
|
ExprSubscript,
|
|
ExprStarred,
|
|
ExprName,
|
|
ExprList,
|
|
ExprTuple,
|
|
ExprSlice,
|
|
ExprIpyEscapeCommand,
|
|
ExceptHandlerExceptHandler,
|
|
FStringExpressionElement,
|
|
FStringLiteralElement,
|
|
PatternMatchValue,
|
|
PatternMatchSingleton,
|
|
PatternMatchSequence,
|
|
PatternMatchMapping,
|
|
PatternMatchClass,
|
|
PatternMatchStar,
|
|
PatternMatchAs,
|
|
PatternMatchOr,
|
|
TypeParamTypeVar,
|
|
TypeParamTypeVarTuple,
|
|
TypeParamParamSpec,
|
|
FStringFormatSpec,
|
|
PatternArguments,
|
|
PatternKeyword,
|
|
Comprehension,
|
|
Arguments,
|
|
Parameters,
|
|
Parameter,
|
|
ParameterWithDefault,
|
|
Keyword,
|
|
Alias,
|
|
WithItem,
|
|
MatchCase,
|
|
Decorator,
|
|
ElifElseClause,
|
|
TypeParams,
|
|
FString,
|
|
StringLiteral,
|
|
BytesLiteral,
|
|
Identifier,
|
|
}
|
|
|
|
impl AnyNodeRef<'_> {
|
|
pub const fn kind(self) -> NodeKind {
|
|
match self {
|
|
AnyNodeRef::ModModule(_) => NodeKind::ModModule,
|
|
AnyNodeRef::ModExpression(_) => NodeKind::ModExpression,
|
|
AnyNodeRef::StmtFunctionDef(_) => NodeKind::StmtFunctionDef,
|
|
AnyNodeRef::StmtClassDef(_) => NodeKind::StmtClassDef,
|
|
AnyNodeRef::StmtReturn(_) => NodeKind::StmtReturn,
|
|
AnyNodeRef::StmtDelete(_) => NodeKind::StmtDelete,
|
|
AnyNodeRef::StmtTypeAlias(_) => NodeKind::StmtTypeAlias,
|
|
AnyNodeRef::StmtAssign(_) => NodeKind::StmtAssign,
|
|
AnyNodeRef::StmtAugAssign(_) => NodeKind::StmtAugAssign,
|
|
AnyNodeRef::StmtAnnAssign(_) => NodeKind::StmtAnnAssign,
|
|
AnyNodeRef::StmtFor(_) => NodeKind::StmtFor,
|
|
AnyNodeRef::StmtWhile(_) => NodeKind::StmtWhile,
|
|
AnyNodeRef::StmtIf(_) => NodeKind::StmtIf,
|
|
AnyNodeRef::StmtWith(_) => NodeKind::StmtWith,
|
|
AnyNodeRef::StmtMatch(_) => NodeKind::StmtMatch,
|
|
AnyNodeRef::StmtRaise(_) => NodeKind::StmtRaise,
|
|
AnyNodeRef::StmtTry(_) => NodeKind::StmtTry,
|
|
AnyNodeRef::StmtAssert(_) => NodeKind::StmtAssert,
|
|
AnyNodeRef::StmtImport(_) => NodeKind::StmtImport,
|
|
AnyNodeRef::StmtImportFrom(_) => NodeKind::StmtImportFrom,
|
|
AnyNodeRef::StmtGlobal(_) => NodeKind::StmtGlobal,
|
|
AnyNodeRef::StmtNonlocal(_) => NodeKind::StmtNonlocal,
|
|
AnyNodeRef::StmtExpr(_) => NodeKind::StmtExpr,
|
|
AnyNodeRef::StmtPass(_) => NodeKind::StmtPass,
|
|
AnyNodeRef::StmtBreak(_) => NodeKind::StmtBreak,
|
|
AnyNodeRef::StmtContinue(_) => NodeKind::StmtContinue,
|
|
AnyNodeRef::StmtIpyEscapeCommand(_) => NodeKind::StmtIpyEscapeCommand,
|
|
AnyNodeRef::ExprBoolOp(_) => NodeKind::ExprBoolOp,
|
|
AnyNodeRef::ExprNamed(_) => NodeKind::ExprNamed,
|
|
AnyNodeRef::ExprBinOp(_) => NodeKind::ExprBinOp,
|
|
AnyNodeRef::ExprUnaryOp(_) => NodeKind::ExprUnaryOp,
|
|
AnyNodeRef::ExprLambda(_) => NodeKind::ExprLambda,
|
|
AnyNodeRef::ExprIf(_) => NodeKind::ExprIf,
|
|
AnyNodeRef::ExprDict(_) => NodeKind::ExprDict,
|
|
AnyNodeRef::ExprSet(_) => NodeKind::ExprSet,
|
|
AnyNodeRef::ExprListComp(_) => NodeKind::ExprListComp,
|
|
AnyNodeRef::ExprSetComp(_) => NodeKind::ExprSetComp,
|
|
AnyNodeRef::ExprDictComp(_) => NodeKind::ExprDictComp,
|
|
AnyNodeRef::ExprGenerator(_) => NodeKind::ExprGenerator,
|
|
AnyNodeRef::ExprAwait(_) => NodeKind::ExprAwait,
|
|
AnyNodeRef::ExprYield(_) => NodeKind::ExprYield,
|
|
AnyNodeRef::ExprYieldFrom(_) => NodeKind::ExprYieldFrom,
|
|
AnyNodeRef::ExprCompare(_) => NodeKind::ExprCompare,
|
|
AnyNodeRef::ExprCall(_) => NodeKind::ExprCall,
|
|
AnyNodeRef::ExprFString(_) => NodeKind::ExprFString,
|
|
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,
|
|
AnyNodeRef::ExprName(_) => NodeKind::ExprName,
|
|
AnyNodeRef::ExprList(_) => NodeKind::ExprList,
|
|
AnyNodeRef::ExprTuple(_) => NodeKind::ExprTuple,
|
|
AnyNodeRef::ExprSlice(_) => NodeKind::ExprSlice,
|
|
AnyNodeRef::ExprIpyEscapeCommand(_) => NodeKind::ExprIpyEscapeCommand,
|
|
AnyNodeRef::ExceptHandlerExceptHandler(_) => NodeKind::ExceptHandlerExceptHandler,
|
|
AnyNodeRef::FStringExpressionElement(_) => NodeKind::FStringExpressionElement,
|
|
AnyNodeRef::FStringLiteralElement(_) => NodeKind::FStringLiteralElement,
|
|
AnyNodeRef::PatternMatchValue(_) => NodeKind::PatternMatchValue,
|
|
AnyNodeRef::PatternMatchSingleton(_) => NodeKind::PatternMatchSingleton,
|
|
AnyNodeRef::PatternMatchSequence(_) => NodeKind::PatternMatchSequence,
|
|
AnyNodeRef::PatternMatchMapping(_) => NodeKind::PatternMatchMapping,
|
|
AnyNodeRef::PatternMatchClass(_) => NodeKind::PatternMatchClass,
|
|
AnyNodeRef::PatternMatchStar(_) => NodeKind::PatternMatchStar,
|
|
AnyNodeRef::PatternMatchAs(_) => NodeKind::PatternMatchAs,
|
|
AnyNodeRef::PatternMatchOr(_) => NodeKind::PatternMatchOr,
|
|
AnyNodeRef::TypeParamTypeVar(_) => NodeKind::TypeParamTypeVar,
|
|
AnyNodeRef::TypeParamTypeVarTuple(_) => NodeKind::TypeParamTypeVarTuple,
|
|
AnyNodeRef::TypeParamParamSpec(_) => NodeKind::TypeParamParamSpec,
|
|
AnyNodeRef::FStringFormatSpec(_) => NodeKind::FStringFormatSpec,
|
|
AnyNodeRef::PatternArguments(_) => NodeKind::PatternArguments,
|
|
AnyNodeRef::PatternKeyword(_) => NodeKind::PatternKeyword,
|
|
AnyNodeRef::Comprehension(_) => NodeKind::Comprehension,
|
|
AnyNodeRef::Arguments(_) => NodeKind::Arguments,
|
|
AnyNodeRef::Parameters(_) => NodeKind::Parameters,
|
|
AnyNodeRef::Parameter(_) => NodeKind::Parameter,
|
|
AnyNodeRef::ParameterWithDefault(_) => NodeKind::ParameterWithDefault,
|
|
AnyNodeRef::Keyword(_) => NodeKind::Keyword,
|
|
AnyNodeRef::Alias(_) => NodeKind::Alias,
|
|
AnyNodeRef::WithItem(_) => NodeKind::WithItem,
|
|
AnyNodeRef::MatchCase(_) => NodeKind::MatchCase,
|
|
AnyNodeRef::Decorator(_) => NodeKind::Decorator,
|
|
AnyNodeRef::ElifElseClause(_) => NodeKind::ElifElseClause,
|
|
AnyNodeRef::TypeParams(_) => NodeKind::TypeParams,
|
|
AnyNodeRef::FString(_) => NodeKind::FString,
|
|
AnyNodeRef::StringLiteral(_) => NodeKind::StringLiteral,
|
|
AnyNodeRef::BytesLiteral(_) => NodeKind::BytesLiteral,
|
|
AnyNodeRef::Identifier(_) => NodeKind::Identifier,
|
|
}
|
|
}
|
|
}
|
|
|
|
/// See also [Module](https://docs.python.org/3/library/ast.html#ast.Module)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ModModule {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub body: Vec<Stmt>,
|
|
}
|
|
|
|
/// See also [Module](https://docs.python.org/3/library/ast.html#ast.Module)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ModExpression {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub body: Box<Expr>,
|
|
}
|
|
|
|
/// See also [FunctionDef](https://docs.python.org/3/library/ast.html#ast.FunctionDef)
|
|
/// and [AsyncFunctionDef](https://docs.python.org/3/library/ast.html#ast.AsyncFunctionDef).
|
|
///
|
|
/// 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 range: ruff_text_size::TextRange,
|
|
pub is_async: bool,
|
|
pub decorator_list: Vec<crate::Decorator>,
|
|
pub name: crate::Identifier,
|
|
pub type_params: Option<Box<crate::TypeParams>>,
|
|
pub parameters: Box<crate::Parameters>,
|
|
pub returns: Option<Box<Expr>>,
|
|
pub body: Vec<Stmt>,
|
|
}
|
|
|
|
/// See also [ClassDef](https://docs.python.org/3/library/ast.html#ast.ClassDef)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct StmtClassDef {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub decorator_list: Vec<crate::Decorator>,
|
|
pub name: crate::Identifier,
|
|
pub type_params: Option<Box<crate::TypeParams>>,
|
|
pub arguments: Option<Box<crate::Arguments>>,
|
|
pub body: Vec<Stmt>,
|
|
}
|
|
|
|
/// See also [Return](https://docs.python.org/3/library/ast.html#ast.Return)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct StmtReturn {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub value: Option<Box<Expr>>,
|
|
}
|
|
|
|
/// See also [Delete](https://docs.python.org/3/library/ast.html#ast.Delete)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct StmtDelete {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub targets: Vec<Expr>,
|
|
}
|
|
|
|
/// See also [TypeAlias](https://docs.python.org/3/library/ast.html#ast.TypeAlias)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct StmtTypeAlias {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub name: Box<Expr>,
|
|
pub type_params: Option<Box<crate::TypeParams>>,
|
|
pub value: Box<Expr>,
|
|
}
|
|
|
|
/// See also [Assign](https://docs.python.org/3/library/ast.html#ast.Assign)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct StmtAssign {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub targets: Vec<Expr>,
|
|
pub value: Box<Expr>,
|
|
}
|
|
|
|
/// See also [AugAssign](https://docs.python.org/3/library/ast.html#ast.AugAssign)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct StmtAugAssign {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub target: Box<Expr>,
|
|
pub op: crate::Operator,
|
|
pub value: Box<Expr>,
|
|
}
|
|
|
|
/// See also [AnnAssign](https://docs.python.org/3/library/ast.html#ast.AnnAssign)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct StmtAnnAssign {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub target: Box<Expr>,
|
|
pub annotation: Box<Expr>,
|
|
pub value: Option<Box<Expr>>,
|
|
pub simple: bool,
|
|
}
|
|
|
|
/// See also [For](https://docs.python.org/3/library/ast.html#ast.For)
|
|
/// and [AsyncFor](https://docs.python.org/3/library/ast.html#ast.AsyncFor).
|
|
///
|
|
/// 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 range: ruff_text_size::TextRange,
|
|
pub is_async: bool,
|
|
pub target: Box<Expr>,
|
|
pub iter: Box<Expr>,
|
|
pub body: Vec<Stmt>,
|
|
pub orelse: Vec<Stmt>,
|
|
}
|
|
|
|
/// See also [While](https://docs.python.org/3/library/ast.html#ast.While)
|
|
/// and [AsyncWhile](https://docs.python.org/3/library/ast.html#ast.AsyncWhile).
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct StmtWhile {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub test: Box<Expr>,
|
|
pub body: Vec<Stmt>,
|
|
pub orelse: Vec<Stmt>,
|
|
}
|
|
|
|
/// See also [If](https://docs.python.org/3/library/ast.html#ast.If)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct StmtIf {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub test: Box<Expr>,
|
|
pub body: Vec<Stmt>,
|
|
pub elif_else_clauses: Vec<crate::ElifElseClause>,
|
|
}
|
|
|
|
/// See also [With](https://docs.python.org/3/library/ast.html#ast.With)
|
|
/// and [AsyncWith](https://docs.python.org/3/library/ast.html#ast.AsyncWith).
|
|
///
|
|
/// 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 range: ruff_text_size::TextRange,
|
|
pub is_async: bool,
|
|
pub items: Vec<crate::WithItem>,
|
|
pub body: Vec<Stmt>,
|
|
}
|
|
|
|
/// See also [Match](https://docs.python.org/3/library/ast.html#ast.Match)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct StmtMatch {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub subject: Box<Expr>,
|
|
pub cases: Vec<crate::MatchCase>,
|
|
}
|
|
|
|
/// See also [Raise](https://docs.python.org/3/library/ast.html#ast.Raise)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct StmtRaise {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub exc: Option<Box<Expr>>,
|
|
pub cause: Option<Box<Expr>>,
|
|
}
|
|
|
|
/// See also [Try](https://docs.python.org/3/library/ast.html#ast.Try)
|
|
/// and [TryStar](https://docs.python.org/3/library/ast.html#ast.TryStar)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct StmtTry {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub body: Vec<Stmt>,
|
|
pub handlers: Vec<ExceptHandler>,
|
|
pub orelse: Vec<Stmt>,
|
|
pub finalbody: Vec<Stmt>,
|
|
pub is_star: bool,
|
|
}
|
|
|
|
/// See also [Assert](https://docs.python.org/3/library/ast.html#ast.Assert)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct StmtAssert {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub test: Box<Expr>,
|
|
pub msg: Option<Box<Expr>>,
|
|
}
|
|
|
|
/// See also [Import](https://docs.python.org/3/library/ast.html#ast.Import)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct StmtImport {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub names: Vec<crate::Alias>,
|
|
}
|
|
|
|
/// See also [ImportFrom](https://docs.python.org/3/library/ast.html#ast.ImportFrom)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct StmtImportFrom {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub module: Option<crate::Identifier>,
|
|
pub names: Vec<crate::Alias>,
|
|
pub level: u32,
|
|
}
|
|
|
|
/// See also [Global](https://docs.python.org/3/library/ast.html#ast.Global)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct StmtGlobal {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub names: Vec<crate::Identifier>,
|
|
}
|
|
|
|
/// See also [Nonlocal](https://docs.python.org/3/library/ast.html#ast.Nonlocal)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct StmtNonlocal {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub names: Vec<crate::Identifier>,
|
|
}
|
|
|
|
/// See also [Expr](https://docs.python.org/3/library/ast.html#ast.Expr)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct StmtExpr {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub value: Box<Expr>,
|
|
}
|
|
|
|
/// See also [Pass](https://docs.python.org/3/library/ast.html#ast.Pass)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct StmtPass {
|
|
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 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 range: ruff_text_size::TextRange,
|
|
}
|
|
|
|
/// An AST node used to represent a IPython escape command at the statement level.
|
|
///
|
|
/// For example,
|
|
/// ```python
|
|
/// %matplotlib inline
|
|
/// ```
|
|
///
|
|
/// ## Terminology
|
|
///
|
|
/// Escape commands are special IPython syntax which starts with a token to identify
|
|
/// the escape kind followed by the command value itself. [Escape kind] are the kind
|
|
/// of escape commands that are recognized by the token: `%`, `%%`, `!`, `!!`,
|
|
/// `?`, `??`, `/`, `;`, and `,`.
|
|
///
|
|
/// Help command (or Dynamic Object Introspection as it's called) are the escape commands
|
|
/// of the kind `?` and `??`. For example, `?str.replace`. Help end command are a subset
|
|
/// of Help command where the token can be at the end of the line i.e., after the value.
|
|
/// For example, `str.replace?`.
|
|
///
|
|
/// Here's where things get tricky. I'll divide the help end command into two types for
|
|
/// better understanding:
|
|
/// 1. Strict version: The token is _only_ at the end of the line. For example,
|
|
/// `str.replace?` or `str.replace??`.
|
|
/// 2. Combined version: Along with the `?` or `??` token, which are at the end of the
|
|
/// line, there are other escape kind tokens that are present at the start as well.
|
|
/// For example, `%matplotlib?` or `%%timeit?`.
|
|
///
|
|
/// Priority comes into picture for the "Combined version" mentioned above. How do
|
|
/// we determine the escape kind if there are tokens on both side of the value, i.e., which
|
|
/// token to choose? The Help end command always takes priority over any other token which
|
|
/// means that if there is `?`/`??` at the end then that is used to determine the kind.
|
|
/// For example, in `%matplotlib?` the escape kind is determined using the `?` token
|
|
/// instead of `%` token.
|
|
///
|
|
/// ## Syntax
|
|
///
|
|
/// `<IpyEscapeKind><Command value>`
|
|
///
|
|
/// The simplest form is an escape kind token followed by the command value. For example,
|
|
/// `%matplotlib inline`, `/foo`, `!pwd`, etc.
|
|
///
|
|
/// `<Command value><IpyEscapeKind ("?" or "??")>`
|
|
///
|
|
/// The help end escape command would be the reverse of the above syntax. Here, the
|
|
/// escape kind token can only be either `?` or `??` and it is at the end of the line.
|
|
/// For example, `str.replace?`, `math.pi??`, etc.
|
|
///
|
|
/// `<IpyEscapeKind><Command value><EscapeKind ("?" or "??")>`
|
|
///
|
|
/// The final syntax is the combined version of the above two. For example, `%matplotlib?`,
|
|
/// `%%timeit??`, etc.
|
|
///
|
|
/// [Escape kind]: crate::IpyEscapeKind
|
|
///
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct StmtIpyEscapeCommand {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub kind: crate::IpyEscapeKind,
|
|
pub value: Box<str>,
|
|
}
|
|
|
|
/// See also [BoolOp](https://docs.python.org/3/library/ast.html#ast.BoolOp)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprBoolOp {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub op: crate::BoolOp,
|
|
pub values: Vec<Expr>,
|
|
}
|
|
|
|
/// See also [NamedExpr](https://docs.python.org/3/library/ast.html#ast.NamedExpr)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprNamed {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub target: Box<Expr>,
|
|
pub value: Box<Expr>,
|
|
}
|
|
|
|
/// See also [BinOp](https://docs.python.org/3/library/ast.html#ast.BinOp)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprBinOp {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub left: Box<Expr>,
|
|
pub op: crate::Operator,
|
|
pub right: Box<Expr>,
|
|
}
|
|
|
|
/// See also [UnaryOp](https://docs.python.org/3/library/ast.html#ast.UnaryOp)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprUnaryOp {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub op: crate::UnaryOp,
|
|
pub operand: Box<Expr>,
|
|
}
|
|
|
|
/// See also [Lambda](https://docs.python.org/3/library/ast.html#ast.Lambda)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprLambda {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub parameters: Option<Box<crate::Parameters>>,
|
|
pub body: Box<Expr>,
|
|
}
|
|
|
|
/// See also [IfExp](https://docs.python.org/3/library/ast.html#ast.IfExp)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprIf {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub test: Box<Expr>,
|
|
pub body: Box<Expr>,
|
|
pub orelse: Box<Expr>,
|
|
}
|
|
|
|
/// See also [Dict](https://docs.python.org/3/library/ast.html#ast.Dict)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprDict {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub items: Vec<crate::DictItem>,
|
|
}
|
|
|
|
/// See also [Set](https://docs.python.org/3/library/ast.html#ast.Set)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprSet {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub elts: Vec<Expr>,
|
|
}
|
|
|
|
/// See also [ListComp](https://docs.python.org/3/library/ast.html#ast.ListComp)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprListComp {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub elt: Box<Expr>,
|
|
pub generators: Vec<crate::Comprehension>,
|
|
}
|
|
|
|
/// See also [SetComp](https://docs.python.org/3/library/ast.html#ast.SetComp)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprSetComp {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub elt: Box<Expr>,
|
|
pub generators: Vec<crate::Comprehension>,
|
|
}
|
|
|
|
/// See also [DictComp](https://docs.python.org/3/library/ast.html#ast.DictComp)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprDictComp {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub key: Box<Expr>,
|
|
pub value: Box<Expr>,
|
|
pub generators: Vec<crate::Comprehension>,
|
|
}
|
|
|
|
/// See also [GeneratorExp](https://docs.python.org/3/library/ast.html#ast.GeneratorExp)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprGenerator {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub elt: Box<Expr>,
|
|
pub generators: Vec<crate::Comprehension>,
|
|
pub parenthesized: bool,
|
|
}
|
|
|
|
/// See also [Await](https://docs.python.org/3/library/ast.html#ast.Await)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprAwait {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub value: Box<Expr>,
|
|
}
|
|
|
|
/// See also [Yield](https://docs.python.org/3/library/ast.html#ast.Yield)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprYield {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub value: Option<Box<Expr>>,
|
|
}
|
|
|
|
/// See also [YieldFrom](https://docs.python.org/3/library/ast.html#ast.YieldFrom)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprYieldFrom {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub value: Box<Expr>,
|
|
}
|
|
|
|
/// See also [Compare](https://docs.python.org/3/library/ast.html#ast.Compare)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprCompare {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub left: Box<Expr>,
|
|
pub ops: Box<[crate::CmpOp]>,
|
|
pub comparators: Box<[Expr]>,
|
|
}
|
|
|
|
/// See also [Call](https://docs.python.org/3/library/ast.html#ast.Call)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprCall {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub func: Box<Expr>,
|
|
pub arguments: crate::Arguments,
|
|
}
|
|
|
|
/// An AST node that represents either a single-part f-string literal
|
|
/// or an implicitly concatenated f-string literal.
|
|
///
|
|
/// This type differs from the original Python AST `JoinedStr` in that it
|
|
/// doesn't join the implicitly concatenated parts into a single string. Instead,
|
|
/// it keeps them separate and provide various methods to access the parts.
|
|
///
|
|
/// See also [JoinedStr](https://docs.python.org/3/library/ast.html#ast.JoinedStr)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprFString {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub value: crate::FStringValue,
|
|
}
|
|
|
|
/// An AST node that represents either a single-part string literal
|
|
/// or an implicitly concatenated string literal.
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprStringLiteral {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub value: crate::StringLiteralValue,
|
|
}
|
|
|
|
/// An AST node that represents either a single-part bytestring literal
|
|
/// or an implicitly concatenated bytestring literal.
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprBytesLiteral {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub value: crate::BytesLiteralValue,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprNumberLiteral {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub value: crate::Number,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Default)]
|
|
pub struct ExprBooleanLiteral {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub value: bool,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Default)]
|
|
pub struct ExprNoneLiteral {
|
|
pub range: ruff_text_size::TextRange,
|
|
}
|
|
|
|
#[derive(Clone, Debug, PartialEq, Default)]
|
|
pub struct ExprEllipsisLiteral {
|
|
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 range: ruff_text_size::TextRange,
|
|
pub value: Box<Expr>,
|
|
pub attr: crate::Identifier,
|
|
pub ctx: crate::ExprContext,
|
|
}
|
|
|
|
/// See also [Subscript](https://docs.python.org/3/library/ast.html#ast.Subscript)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprSubscript {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub value: Box<Expr>,
|
|
pub slice: Box<Expr>,
|
|
pub ctx: crate::ExprContext,
|
|
}
|
|
|
|
/// See also [Starred](https://docs.python.org/3/library/ast.html#ast.Starred)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprStarred {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub value: Box<Expr>,
|
|
pub ctx: crate::ExprContext,
|
|
}
|
|
|
|
/// See also [Name](https://docs.python.org/3/library/ast.html#ast.Name)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprName {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub id: Name,
|
|
pub ctx: crate::ExprContext,
|
|
}
|
|
|
|
/// See also [List](https://docs.python.org/3/library/ast.html#ast.List)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprList {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub elts: Vec<Expr>,
|
|
pub ctx: crate::ExprContext,
|
|
}
|
|
|
|
/// See also [Tuple](https://docs.python.org/3/library/ast.html#ast.Tuple)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprTuple {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub elts: Vec<Expr>,
|
|
pub ctx: crate::ExprContext,
|
|
pub parenthesized: bool,
|
|
}
|
|
|
|
/// See also [Slice](https://docs.python.org/3/library/ast.html#ast.Slice)
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprSlice {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub lower: Option<Box<Expr>>,
|
|
pub upper: Option<Box<Expr>>,
|
|
pub step: Option<Box<Expr>>,
|
|
}
|
|
|
|
/// An AST node used to represent a IPython escape command at the expression level.
|
|
///
|
|
/// For example,
|
|
/// ```python
|
|
/// dir = !pwd
|
|
/// ```
|
|
///
|
|
/// Here, the escape kind can only be `!` or `%` otherwise it is a syntax error.
|
|
///
|
|
/// For more information related to terminology and syntax of escape commands,
|
|
/// see [`StmtIpyEscapeCommand`].
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub struct ExprIpyEscapeCommand {
|
|
pub range: ruff_text_size::TextRange,
|
|
pub kind: crate::IpyEscapeKind,
|
|
pub value: Box<str>,
|
|
}
|
|
|
|
impl ModModule {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ModModule { body, range: _ } = self;
|
|
visitor.visit_body(body);
|
|
}
|
|
}
|
|
|
|
impl ModExpression {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ModExpression { body, range: _ } = self;
|
|
visitor.visit_expr(body);
|
|
}
|
|
}
|
|
|
|
impl StmtFunctionDef {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtFunctionDef {
|
|
is_async: _,
|
|
decorator_list,
|
|
name,
|
|
type_params,
|
|
parameters,
|
|
returns,
|
|
body,
|
|
range: _,
|
|
} = self;
|
|
|
|
for elm in decorator_list {
|
|
visitor.visit_decorator(elm);
|
|
}
|
|
visitor.visit_identifier(name);
|
|
|
|
if let Some(type_params) = type_params {
|
|
visitor.visit_type_params(type_params);
|
|
}
|
|
|
|
visitor.visit_parameters(parameters);
|
|
|
|
if let Some(returns) = returns {
|
|
visitor.visit_annotation(returns);
|
|
}
|
|
|
|
visitor.visit_body(body);
|
|
}
|
|
}
|
|
|
|
impl StmtClassDef {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtClassDef {
|
|
decorator_list,
|
|
name,
|
|
type_params,
|
|
arguments,
|
|
body,
|
|
range: _,
|
|
} = self;
|
|
|
|
for elm in decorator_list {
|
|
visitor.visit_decorator(elm);
|
|
}
|
|
visitor.visit_identifier(name);
|
|
|
|
if let Some(type_params) = type_params {
|
|
visitor.visit_type_params(type_params);
|
|
}
|
|
|
|
if let Some(arguments) = arguments {
|
|
visitor.visit_arguments(arguments);
|
|
}
|
|
|
|
visitor.visit_body(body);
|
|
}
|
|
}
|
|
|
|
impl StmtReturn {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtReturn { value, range: _ } = self;
|
|
|
|
if let Some(value) = value {
|
|
visitor.visit_expr(value);
|
|
}
|
|
}
|
|
}
|
|
|
|
impl StmtDelete {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtDelete { targets, range: _ } = self;
|
|
|
|
for elm in targets {
|
|
visitor.visit_expr(elm);
|
|
}
|
|
}
|
|
}
|
|
|
|
impl StmtTypeAlias {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtTypeAlias {
|
|
name,
|
|
type_params,
|
|
value,
|
|
range: _,
|
|
} = self;
|
|
visitor.visit_expr(name);
|
|
|
|
if let Some(type_params) = type_params {
|
|
visitor.visit_type_params(type_params);
|
|
}
|
|
|
|
visitor.visit_expr(value);
|
|
}
|
|
}
|
|
|
|
impl StmtAssign {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtAssign {
|
|
targets,
|
|
value,
|
|
range: _,
|
|
} = self;
|
|
|
|
for elm in targets {
|
|
visitor.visit_expr(elm);
|
|
}
|
|
visitor.visit_expr(value);
|
|
}
|
|
}
|
|
|
|
impl StmtAugAssign {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtAugAssign {
|
|
target,
|
|
op,
|
|
value,
|
|
range: _,
|
|
} = self;
|
|
visitor.visit_expr(target);
|
|
visitor.visit_operator(op);
|
|
visitor.visit_expr(value);
|
|
}
|
|
}
|
|
|
|
impl StmtAnnAssign {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtAnnAssign {
|
|
target,
|
|
annotation,
|
|
value,
|
|
simple: _,
|
|
range: _,
|
|
} = self;
|
|
visitor.visit_expr(target);
|
|
visitor.visit_annotation(annotation);
|
|
|
|
if let Some(value) = value {
|
|
visitor.visit_expr(value);
|
|
}
|
|
}
|
|
}
|
|
|
|
impl StmtFor {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtFor {
|
|
is_async: _,
|
|
target,
|
|
iter,
|
|
body,
|
|
orelse,
|
|
range: _,
|
|
} = self;
|
|
visitor.visit_expr(target);
|
|
visitor.visit_expr(iter);
|
|
visitor.visit_body(body);
|
|
visitor.visit_body(orelse);
|
|
}
|
|
}
|
|
|
|
impl StmtWhile {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtWhile {
|
|
test,
|
|
body,
|
|
orelse,
|
|
range: _,
|
|
} = self;
|
|
visitor.visit_expr(test);
|
|
visitor.visit_body(body);
|
|
visitor.visit_body(orelse);
|
|
}
|
|
}
|
|
|
|
impl StmtIf {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtIf {
|
|
test,
|
|
body,
|
|
elif_else_clauses,
|
|
range: _,
|
|
} = self;
|
|
visitor.visit_expr(test);
|
|
visitor.visit_body(body);
|
|
|
|
for elm in elif_else_clauses {
|
|
visitor.visit_elif_else_clause(elm);
|
|
}
|
|
}
|
|
}
|
|
|
|
impl StmtWith {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtWith {
|
|
is_async: _,
|
|
items,
|
|
body,
|
|
range: _,
|
|
} = self;
|
|
|
|
for elm in items {
|
|
visitor.visit_with_item(elm);
|
|
}
|
|
visitor.visit_body(body);
|
|
}
|
|
}
|
|
|
|
impl StmtMatch {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtMatch {
|
|
subject,
|
|
cases,
|
|
range: _,
|
|
} = self;
|
|
visitor.visit_expr(subject);
|
|
|
|
for elm in cases {
|
|
visitor.visit_match_case(elm);
|
|
}
|
|
}
|
|
}
|
|
|
|
impl StmtRaise {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtRaise {
|
|
exc,
|
|
cause,
|
|
range: _,
|
|
} = self;
|
|
|
|
if let Some(exc) = exc {
|
|
visitor.visit_expr(exc);
|
|
}
|
|
|
|
if let Some(cause) = cause {
|
|
visitor.visit_expr(cause);
|
|
}
|
|
}
|
|
}
|
|
|
|
impl StmtTry {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtTry {
|
|
body,
|
|
handlers,
|
|
orelse,
|
|
finalbody,
|
|
is_star: _,
|
|
range: _,
|
|
} = self;
|
|
visitor.visit_body(body);
|
|
|
|
for elm in handlers {
|
|
visitor.visit_except_handler(elm);
|
|
}
|
|
visitor.visit_body(orelse);
|
|
visitor.visit_body(finalbody);
|
|
}
|
|
}
|
|
|
|
impl StmtAssert {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtAssert {
|
|
test,
|
|
msg,
|
|
range: _,
|
|
} = self;
|
|
visitor.visit_expr(test);
|
|
|
|
if let Some(msg) = msg {
|
|
visitor.visit_expr(msg);
|
|
}
|
|
}
|
|
}
|
|
|
|
impl StmtImport {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtImport { names, range: _ } = self;
|
|
|
|
for elm in names {
|
|
visitor.visit_alias(elm);
|
|
}
|
|
}
|
|
}
|
|
|
|
impl StmtImportFrom {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtImportFrom {
|
|
module,
|
|
names,
|
|
level: _,
|
|
range: _,
|
|
} = self;
|
|
|
|
if let Some(module) = module {
|
|
visitor.visit_identifier(module);
|
|
}
|
|
|
|
for elm in names {
|
|
visitor.visit_alias(elm);
|
|
}
|
|
}
|
|
}
|
|
|
|
impl StmtGlobal {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtGlobal { names, range: _ } = self;
|
|
|
|
for elm in names {
|
|
visitor.visit_identifier(elm);
|
|
}
|
|
}
|
|
}
|
|
|
|
impl StmtNonlocal {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtNonlocal { names, range: _ } = self;
|
|
|
|
for elm in names {
|
|
visitor.visit_identifier(elm);
|
|
}
|
|
}
|
|
}
|
|
|
|
impl StmtExpr {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtExpr { value, range: _ } = self;
|
|
visitor.visit_expr(value);
|
|
}
|
|
}
|
|
|
|
impl StmtPass {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, _: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtPass { range: _ } = self;
|
|
}
|
|
}
|
|
|
|
impl StmtBreak {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, _: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtBreak { range: _ } = self;
|
|
}
|
|
}
|
|
|
|
impl StmtContinue {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, _: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtContinue { range: _ } = self;
|
|
}
|
|
}
|
|
|
|
impl StmtIpyEscapeCommand {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, _: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let StmtIpyEscapeCommand {
|
|
kind: _,
|
|
value: _,
|
|
range: _,
|
|
} = self;
|
|
}
|
|
}
|
|
|
|
impl ExprNamed {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprNamed {
|
|
target,
|
|
value,
|
|
range: _,
|
|
} = self;
|
|
visitor.visit_expr(target);
|
|
visitor.visit_expr(value);
|
|
}
|
|
}
|
|
|
|
impl ExprBinOp {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprBinOp {
|
|
left,
|
|
op,
|
|
right,
|
|
range: _,
|
|
} = self;
|
|
visitor.visit_expr(left);
|
|
visitor.visit_operator(op);
|
|
visitor.visit_expr(right);
|
|
}
|
|
}
|
|
|
|
impl ExprUnaryOp {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprUnaryOp {
|
|
op,
|
|
operand,
|
|
range: _,
|
|
} = self;
|
|
visitor.visit_unary_op(op);
|
|
visitor.visit_expr(operand);
|
|
}
|
|
}
|
|
|
|
impl ExprLambda {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprLambda {
|
|
parameters,
|
|
body,
|
|
range: _,
|
|
} = self;
|
|
|
|
if let Some(parameters) = parameters {
|
|
visitor.visit_parameters(parameters);
|
|
}
|
|
|
|
visitor.visit_expr(body);
|
|
}
|
|
}
|
|
|
|
impl ExprIf {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprIf {
|
|
test,
|
|
body,
|
|
orelse,
|
|
range: _,
|
|
} = self;
|
|
visitor.visit_expr(body);
|
|
visitor.visit_expr(test);
|
|
visitor.visit_expr(orelse);
|
|
}
|
|
}
|
|
|
|
impl ExprSet {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprSet { elts, range: _ } = self;
|
|
|
|
for elm in elts {
|
|
visitor.visit_expr(elm);
|
|
}
|
|
}
|
|
}
|
|
|
|
impl ExprListComp {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprListComp {
|
|
elt,
|
|
generators,
|
|
range: _,
|
|
} = self;
|
|
visitor.visit_expr(elt);
|
|
|
|
for elm in generators {
|
|
visitor.visit_comprehension(elm);
|
|
}
|
|
}
|
|
}
|
|
|
|
impl ExprSetComp {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprSetComp {
|
|
elt,
|
|
generators,
|
|
range: _,
|
|
} = self;
|
|
visitor.visit_expr(elt);
|
|
|
|
for elm in generators {
|
|
visitor.visit_comprehension(elm);
|
|
}
|
|
}
|
|
}
|
|
|
|
impl ExprDictComp {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprDictComp {
|
|
key,
|
|
value,
|
|
generators,
|
|
range: _,
|
|
} = self;
|
|
visitor.visit_expr(key);
|
|
visitor.visit_expr(value);
|
|
|
|
for elm in generators {
|
|
visitor.visit_comprehension(elm);
|
|
}
|
|
}
|
|
}
|
|
|
|
impl ExprGenerator {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprGenerator {
|
|
elt,
|
|
generators,
|
|
parenthesized: _,
|
|
range: _,
|
|
} = self;
|
|
visitor.visit_expr(elt);
|
|
|
|
for elm in generators {
|
|
visitor.visit_comprehension(elm);
|
|
}
|
|
}
|
|
}
|
|
|
|
impl ExprAwait {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprAwait { value, range: _ } = self;
|
|
visitor.visit_expr(value);
|
|
}
|
|
}
|
|
|
|
impl ExprYield {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprYield { value, range: _ } = self;
|
|
|
|
if let Some(value) = value {
|
|
visitor.visit_expr(value);
|
|
}
|
|
}
|
|
}
|
|
|
|
impl ExprYieldFrom {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprYieldFrom { value, range: _ } = self;
|
|
visitor.visit_expr(value);
|
|
}
|
|
}
|
|
|
|
impl ExprCall {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprCall {
|
|
func,
|
|
arguments,
|
|
range: _,
|
|
} = self;
|
|
visitor.visit_expr(func);
|
|
visitor.visit_arguments(arguments);
|
|
}
|
|
}
|
|
|
|
impl ExprNumberLiteral {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, _: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprNumberLiteral { value: _, range: _ } = self;
|
|
}
|
|
}
|
|
|
|
impl ExprBooleanLiteral {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, _: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprBooleanLiteral { value: _, range: _ } = self;
|
|
}
|
|
}
|
|
|
|
impl ExprNoneLiteral {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, _: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprNoneLiteral { range: _ } = self;
|
|
}
|
|
}
|
|
|
|
impl ExprEllipsisLiteral {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, _: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprEllipsisLiteral { range: _ } = self;
|
|
}
|
|
}
|
|
|
|
impl ExprAttribute {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprAttribute {
|
|
value,
|
|
attr,
|
|
ctx: _,
|
|
range: _,
|
|
} = self;
|
|
visitor.visit_expr(value);
|
|
visitor.visit_identifier(attr);
|
|
}
|
|
}
|
|
|
|
impl ExprSubscript {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprSubscript {
|
|
value,
|
|
slice,
|
|
ctx: _,
|
|
range: _,
|
|
} = self;
|
|
visitor.visit_expr(value);
|
|
visitor.visit_expr(slice);
|
|
}
|
|
}
|
|
|
|
impl ExprStarred {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprStarred {
|
|
value,
|
|
ctx: _,
|
|
range: _,
|
|
} = self;
|
|
visitor.visit_expr(value);
|
|
}
|
|
}
|
|
|
|
impl ExprName {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, _: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprName {
|
|
id: _,
|
|
ctx: _,
|
|
range: _,
|
|
} = self;
|
|
}
|
|
}
|
|
|
|
impl ExprList {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprList {
|
|
elts,
|
|
ctx: _,
|
|
range: _,
|
|
} = self;
|
|
|
|
for elm in elts {
|
|
visitor.visit_expr(elm);
|
|
}
|
|
}
|
|
}
|
|
|
|
impl ExprTuple {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprTuple {
|
|
elts,
|
|
ctx: _,
|
|
parenthesized: _,
|
|
range: _,
|
|
} = self;
|
|
|
|
for elm in elts {
|
|
visitor.visit_expr(elm);
|
|
}
|
|
}
|
|
}
|
|
|
|
impl ExprSlice {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, visitor: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprSlice {
|
|
lower,
|
|
upper,
|
|
step,
|
|
range: _,
|
|
} = self;
|
|
|
|
if let Some(lower) = lower {
|
|
visitor.visit_expr(lower);
|
|
}
|
|
|
|
if let Some(upper) = upper {
|
|
visitor.visit_expr(upper);
|
|
}
|
|
|
|
if let Some(step) = step {
|
|
visitor.visit_expr(step);
|
|
}
|
|
}
|
|
}
|
|
|
|
impl ExprIpyEscapeCommand {
|
|
pub(crate) fn visit_source_order<'a, V>(&'a self, _: &mut V)
|
|
where
|
|
V: SourceOrderVisitor<'a> + ?Sized,
|
|
{
|
|
let ExprIpyEscapeCommand {
|
|
kind: _,
|
|
value: _,
|
|
range: _,
|
|
} = self;
|
|
}
|
|
}
|