diff --git a/ast/asdl_rs.py b/ast/asdl_rs.py index 71c9032..b24ef01 100755 --- a/ast/asdl_rs.py +++ b/ast/asdl_rs.py @@ -190,7 +190,7 @@ class StructVisitor(TypeInfoEmitVisitor): self.sum_with_constructors(sum, name, depth) def emit_attrs(self, depth): - self.emit("#[derive(Debug, PartialEq)]", depth) + self.emit("#[derive(Clone, Debug, PartialEq)]", depth) def simple_sum(self, sum, name, depth): rustname = get_rust_type(name) diff --git a/ast/src/ast_gen.rs b/ast/src/ast_gen.rs index 17900fe..4460ee8 100644 --- a/ast/src/ast_gen.rs +++ b/ast/src/ast_gen.rs @@ -7,7 +7,7 @@ pub use crate::Location; type Ident = String; -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub struct Located { pub location: Location, pub custom: U, @@ -24,7 +24,7 @@ impl Located { } } -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub enum Mod { Module { body: Vec>, @@ -42,7 +42,7 @@ pub enum Mod { }, } -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub enum StmtKind { FunctionDef { name: Ident, @@ -164,7 +164,7 @@ pub enum StmtKind { } pub type Stmt = Located, U>; -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub enum ExprKind { BoolOp { op: Boolop, @@ -281,20 +281,20 @@ pub enum ExprKind { } pub type Expr = Located, U>; -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub enum ExprContext { Load, Store, Del, } -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub enum Boolop { And, Or, } -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub enum Operator { Add, Sub, @@ -311,7 +311,7 @@ pub enum Operator { FloorDiv, } -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub enum Unaryop { Invert, Not, @@ -319,7 +319,7 @@ pub enum Unaryop { USub, } -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub enum Cmpop { Eq, NotEq, @@ -333,7 +333,7 @@ pub enum Cmpop { NotIn, } -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub struct Comprehension { pub target: Box>, pub iter: Box>, @@ -341,7 +341,7 @@ pub struct Comprehension { pub is_async: usize, } -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub enum ExcepthandlerKind { ExceptHandler { type_: Option>>, @@ -351,7 +351,7 @@ pub enum ExcepthandlerKind { } pub type Excepthandler = Located, U>; -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub struct Arguments { pub posonlyargs: Vec>, pub args: Vec>, @@ -362,7 +362,7 @@ pub struct Arguments { pub defaults: Vec>, } -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub struct ArgData { pub arg: Ident, pub annotation: Option>>, @@ -370,34 +370,34 @@ pub struct ArgData { } pub type Arg = Located, U>; -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub struct KeywordData { pub arg: Option, pub value: Box>, } pub type Keyword = Located, U>; -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub struct AliasData { pub name: Ident, pub asname: Option, } pub type Alias = Located; -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub struct Withitem { pub context_expr: Box>, pub optional_vars: Option>>, } -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub struct MatchCase { pub pattern: Box>, pub guard: Option>>, pub body: Vec>, } -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub enum PatternKind { MatchValue { value: Box>, @@ -432,7 +432,7 @@ pub enum PatternKind { } pub type Pattern = Located, U>; -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub enum TypeIgnore { TypeIgnore { lineno: usize, tag: String }, } diff --git a/ast/src/constant.rs b/ast/src/constant.rs index b73bab6..5c5e55b 100644 --- a/ast/src/constant.rs +++ b/ast/src/constant.rs @@ -1,7 +1,7 @@ use num_bigint::BigInt; pub use rustpython_compiler_core::ConversionFlag; -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub enum Constant { None, Bool(bool),