diff --git a/ast/asdl_rs.py b/ast/asdl_rs.py index ea035ed..f061705 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 e4fcc44..1917bec 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 end_location: Option, @@ -26,7 +26,7 @@ impl Located { } } -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub enum Mod { Module { body: Vec>, @@ -44,7 +44,7 @@ pub enum Mod { }, } -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub enum StmtKind { FunctionDef { name: Ident, @@ -166,7 +166,7 @@ pub enum StmtKind { } pub type Stmt = Located, U>; -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub enum ExprKind { BoolOp { op: Boolop, @@ -283,20 +283,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, @@ -313,7 +313,7 @@ pub enum Operator { FloorDiv, } -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub enum Unaryop { Invert, Not, @@ -321,7 +321,7 @@ pub enum Unaryop { USub, } -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub enum Cmpop { Eq, NotEq, @@ -335,7 +335,7 @@ pub enum Cmpop { NotIn, } -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub struct Comprehension { pub target: Box>, pub iter: Box>, @@ -343,7 +343,7 @@ pub struct Comprehension { pub is_async: usize, } -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub enum ExcepthandlerKind { ExceptHandler { type_: Option>>, @@ -353,7 +353,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>, @@ -364,7 +364,7 @@ pub struct Arguments { pub defaults: Vec>, } -#[derive(Debug, PartialEq)] +#[derive(Clone, Debug, PartialEq)] pub struct ArgData { pub arg: Ident, pub annotation: Option>>, @@ -372,34 +372,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>, @@ -434,7 +434,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 5de3b34..373f5f9 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),