mirror of https://github.com/mtshiba/pylyzer
Update clone.rs
This commit is contained in:
parent
8f6f9af89c
commit
9462b9572e
|
|
@ -1,6 +1,6 @@
|
||||||
use rustpython_parser::ast::{
|
use rustpython_parser::ast::{
|
||||||
BooleanOperator, Comparison, ExpressionType, Keyword, Located, Number, Operator, Parameter,
|
BooleanOperator, Comparison, Comprehension, ComprehensionKind, ExpressionType, Keyword,
|
||||||
Parameters, StringGroup, UnaryOperator, Varargs,
|
Located, Number, Operator, Parameter, Parameters, StringGroup, UnaryOperator, Varargs,
|
||||||
};
|
};
|
||||||
|
|
||||||
fn clone_number(num: &Number) -> Number {
|
fn clone_number(num: &Number) -> Number {
|
||||||
|
|
@ -135,6 +135,26 @@ fn clone_kw(keyword: &Keyword) -> Keyword {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn clone_comprehension_kind(kind: &ComprehensionKind) -> ComprehensionKind {
|
||||||
|
match kind {
|
||||||
|
ComprehensionKind::Dict { key, value } => ComprehensionKind::Dict {
|
||||||
|
key: clone_loc_expr(key),
|
||||||
|
value: clone_loc_expr(value),
|
||||||
|
},
|
||||||
|
ComprehensionKind::List { element } => ComprehensionKind::List {
|
||||||
|
element: clone_loc_expr(element),
|
||||||
|
},
|
||||||
|
ComprehensionKind::Set { element } => ComprehensionKind::Set {
|
||||||
|
element: clone_loc_expr(element),
|
||||||
|
},
|
||||||
|
ComprehensionKind::GeneratorExpression { element } => {
|
||||||
|
ComprehensionKind::GeneratorExpression {
|
||||||
|
element: clone_loc_expr(element),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn clone_loc_expr(expr: &Located<ExpressionType>) -> Located<ExpressionType> {
|
pub fn clone_loc_expr(expr: &Located<ExpressionType>) -> Located<ExpressionType> {
|
||||||
Located {
|
Located {
|
||||||
node: clone_expr(&expr.node),
|
node: clone_expr(&expr.node),
|
||||||
|
|
@ -144,6 +164,10 @@ pub fn clone_loc_expr(expr: &Located<ExpressionType>) -> Located<ExpressionType>
|
||||||
|
|
||||||
pub fn clone_expr(expr: &ExpressionType) -> ExpressionType {
|
pub fn clone_expr(expr: &ExpressionType) -> ExpressionType {
|
||||||
match expr {
|
match expr {
|
||||||
|
ExpressionType::None => ExpressionType::None,
|
||||||
|
ExpressionType::Ellipsis => ExpressionType::Ellipsis,
|
||||||
|
ExpressionType::True => ExpressionType::True,
|
||||||
|
ExpressionType::False => ExpressionType::False,
|
||||||
ExpressionType::Identifier { name } => ExpressionType::Identifier { name: name.clone() },
|
ExpressionType::Identifier { name } => ExpressionType::Identifier { name: name.clone() },
|
||||||
ExpressionType::Number { value } => ExpressionType::Number {
|
ExpressionType::Number { value } => ExpressionType::Number {
|
||||||
value: clone_number(value),
|
value: clone_number(value),
|
||||||
|
|
@ -159,6 +183,12 @@ pub fn clone_expr(expr: &ExpressionType) -> ExpressionType {
|
||||||
a: Box::new(clone_loc_expr(a)),
|
a: Box::new(clone_loc_expr(a)),
|
||||||
b: Box::new(clone_loc_expr(b)),
|
b: Box::new(clone_loc_expr(b)),
|
||||||
},
|
},
|
||||||
|
ExpressionType::Slice { elements } => ExpressionType::Slice {
|
||||||
|
elements: elements.iter().map(clone_loc_expr).collect::<Vec<_>>(),
|
||||||
|
},
|
||||||
|
ExpressionType::Bytes { value } => ExpressionType::Bytes {
|
||||||
|
value: value.clone(),
|
||||||
|
},
|
||||||
ExpressionType::Call {
|
ExpressionType::Call {
|
||||||
function,
|
function,
|
||||||
args,
|
args,
|
||||||
|
|
@ -218,6 +248,25 @@ pub fn clone_expr(expr: &ExpressionType) -> ExpressionType {
|
||||||
ExpressionType::Await { value } => ExpressionType::Await {
|
ExpressionType::Await { value } => ExpressionType::Await {
|
||||||
value: Box::new(clone_loc_expr(value)),
|
value: Box::new(clone_loc_expr(value)),
|
||||||
},
|
},
|
||||||
other => todo!("clone_expr: {:?}", other),
|
ExpressionType::NamedExpression { left, right } => ExpressionType::NamedExpression {
|
||||||
|
left: Box::new(clone_loc_expr(left)),
|
||||||
|
right: Box::new(clone_loc_expr(right)),
|
||||||
|
},
|
||||||
|
ExpressionType::Starred { value } => ExpressionType::Starred {
|
||||||
|
value: Box::new(clone_loc_expr(value)),
|
||||||
|
},
|
||||||
|
ExpressionType::Comprehension { kind, generators } => ExpressionType::Comprehension {
|
||||||
|
kind: Box::new(clone_comprehension_kind(kind)),
|
||||||
|
generators: generators
|
||||||
|
.iter()
|
||||||
|
.map(|gen| Comprehension {
|
||||||
|
location: gen.location,
|
||||||
|
target: clone_loc_expr(&gen.target),
|
||||||
|
iter: clone_loc_expr(&gen.iter),
|
||||||
|
ifs: gen.ifs.iter().map(clone_loc_expr).collect::<Vec<_>>(),
|
||||||
|
is_async: gen.is_async,
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>(),
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue