Skip to content

Commit 82226bf

Browse files
authored
Merge pull request RustPython#127 from RustPython/objtyp
Objtyp
2 parents ab6c517 + 1a2a4ad commit 82226bf

13 files changed

+54
-54
lines changed

vm/src/builtins.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ fn builtin_id(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
204204
fn builtin_isinstance(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
205205
arg_check!(vm, args, required = [(obj, None), (typ, None)]);
206206

207-
let isinstance = objtype::isinstance(obj.clone(), typ.clone());
207+
let isinstance = objtype::isinstance(obj, typ.clone());
208208
Ok(vm.context().new_bool(isinstance))
209209
}
210210

@@ -213,7 +213,7 @@ fn builtin_issubclass(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
213213
panic!("issubclass expects exactly two parameters");
214214
}
215215

216-
let cls1 = args.args[0].clone();
216+
let cls1 = &args.args[0];
217217
let cls2 = args.args[1].clone();
218218

219219
Ok(vm.context().new_bool(objtype::issubclass(cls1, cls2)))

vm/src/exceptions.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ fn exception_init(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
2424
pub fn print_exception(vm: &mut VirtualMachine, exc: &PyObjectRef) {
2525
if let Some(tb) = exc.get_attr("__traceback__") {
2626
println!("Traceback (most recent call last):");
27-
if objtype::isinstance(tb.clone(), vm.ctx.list_type()) {
27+
if objtype::isinstance(&tb, vm.ctx.list_type()) {
2828
let mut elements = objlist::get_elements(&tb);
2929
elements.reverse();
3030
for element in elements {
31-
if objtype::isinstance(element.clone(), vm.ctx.tuple_type()) {
31+
if objtype::isinstance(&element, vm.ctx.tuple_type()) {
3232
let element = objtuple::get_elements(&element);
3333
let filename = if let Ok(x) = vm.to_str(element[0].clone()) {
3434
objstr::get_value(&x)

vm/src/macros.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ macro_rules! arg_check {
6363
{
6464
match expected_type {
6565
Some(expected_type) => {
66-
if !objtype::isinstance(arg.clone(), expected_type.clone()) {
66+
if !objtype::isinstance(arg, expected_type.clone()) {
6767
let arg_typ = arg.typ().clone();
6868
let actual_type = arg_typ.borrow().str().clone();
6969
return Err($vm.new_type_error(format!(

vm/src/obj/objbytes.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ fn bytes_init(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
2121
args,
2222
required = [(zelf, Some(vm.ctx.bytes_type())), (arg, None)]
2323
);
24-
let val = if objtype::isinstance(arg.clone(), vm.ctx.list_type()) {
24+
let val = if objtype::isinstance(arg, vm.ctx.list_type()) {
2525
let mut data_bytes = vec![];
2626
for elem in objlist::get_elements(arg) {
2727
let v = match objint::to_int(vm, &elem) {

vm/src/obj/objfloat.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ fn float_init(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
1818
args,
1919
required = [(zelf, Some(vm.ctx.float_type())), (arg, None)]
2020
);
21-
let val = if objtype::isinstance(arg.clone(), vm.ctx.float_type()) {
21+
let val = if objtype::isinstance(arg, vm.ctx.float_type()) {
2222
get_value(arg)
23-
} else if objtype::isinstance(arg.clone(), vm.ctx.int_type()) {
23+
} else if objtype::isinstance(arg, vm.ctx.int_type()) {
2424
objint::get_value(arg) as f64
2525
} else {
2626
return Err(vm.new_type_error("Cannot construct int".to_string()));
@@ -49,10 +49,10 @@ fn float_eq(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
4949
required = [(zelf, Some(vm.ctx.float_type())), (other, None)]
5050
);
5151
let zelf = get_value(zelf);
52-
let result = if objtype::isinstance(other.clone(), vm.ctx.float_type()) {
52+
let result = if objtype::isinstance(other, vm.ctx.float_type()) {
5353
let other = get_value(other);
5454
zelf == other
55-
} else if objtype::isinstance(other.clone(), vm.ctx.int_type()) {
55+
} else if objtype::isinstance(other, vm.ctx.int_type()) {
5656
let other = objint::get_value(other) as f64;
5757
zelf == other
5858
} else {
@@ -69,9 +69,9 @@ fn float_add(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
6969
);
7070

7171
let v1 = get_value(i);
72-
if objtype::isinstance(i2.clone(), vm.ctx.float_type()) {
72+
if objtype::isinstance(i2, vm.ctx.float_type()) {
7373
Ok(vm.ctx.new_float(v1 + get_value(i2)))
74-
} else if objtype::isinstance(i2.clone(), vm.ctx.int_type()) {
74+
} else if objtype::isinstance(i2, vm.ctx.int_type()) {
7575
Ok(vm.ctx.new_float(v1 + objint::get_value(i2) as f64))
7676
} else {
7777
Err(vm.new_type_error(format!("Cannot add {:?} and {:?}", i, i2)))
@@ -86,9 +86,9 @@ fn float_sub(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
8686
);
8787

8888
let v1 = get_value(i);
89-
if objtype::isinstance(i2.clone(), vm.ctx.float_type()) {
89+
if objtype::isinstance(i2, vm.ctx.float_type()) {
9090
Ok(vm.ctx.new_float(v1 - get_value(i2)))
91-
} else if objtype::isinstance(i2.clone(), vm.ctx.int_type()) {
91+
} else if objtype::isinstance(i2, vm.ctx.int_type()) {
9292
Ok(vm.ctx.new_float(v1 - objint::get_value(i2) as f64))
9393
} else {
9494
Err(vm.new_type_error(format!("Cannot add {:?} and {:?}", i, i2)))
@@ -103,10 +103,10 @@ fn float_pow(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
103103
);
104104

105105
let v1 = get_value(i);
106-
if objtype::isinstance(i2.clone(), vm.ctx.float_type()) {
106+
if objtype::isinstance(i2, vm.ctx.float_type()) {
107107
let result = v1.powf(get_value(i2));
108108
Ok(vm.ctx.new_float(result))
109-
} else if objtype::isinstance(i2.clone(), vm.ctx.int_type()) {
109+
} else if objtype::isinstance(i2, vm.ctx.int_type()) {
110110
let result = v1.powf(objint::get_value(i2) as f64);
111111
Ok(vm.ctx.new_float(result))
112112
} else {

vm/src/obj/objint.rs

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ fn int_repr(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
1414

1515
fn int_new(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
1616
let ref cls = args.args[0];
17-
if !objtype::issubclass(cls.clone(), vm.ctx.int_type()) {
17+
if !objtype::issubclass(cls, vm.ctx.int_type()) {
1818
return Err(vm.new_type_error(format!("{:?} is not a subtype of int", cls)));
1919
}
2020
let val = to_int(vm, &args.args[1].clone())?;
@@ -26,9 +26,9 @@ fn int_new(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
2626

2727
// Casting function:
2828
pub fn to_int(vm: &mut VirtualMachine, obj: &PyObjectRef) -> Result<i32, PyObjectRef> {
29-
let val = if objtype::isinstance(obj.clone(), vm.ctx.int_type()) {
29+
let val = if objtype::isinstance(obj, vm.ctx.int_type()) {
3030
get_value(obj)
31-
} else if objtype::isinstance(obj.clone(), vm.ctx.float_type()) {
31+
} else if objtype::isinstance(obj, vm.ctx.float_type()) {
3232
objfloat::get_value(obj) as i32
3333
} else {
3434
return Err(vm.new_type_error("Cannot construct int".to_string()));
@@ -57,11 +57,11 @@ fn int_eq(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
5757
args,
5858
required = [(zelf, Some(vm.ctx.int_type())), (other, None)]
5959
);
60-
let result = if objtype::isinstance(other.clone(), vm.ctx.int_type()) {
60+
let result = if objtype::isinstance(other, vm.ctx.int_type()) {
6161
let zelf = i32::from_pyobj(zelf);
6262
let other = i32::from_pyobj(other);
6363
zelf == other
64-
} else if objtype::isinstance(other.clone(), vm.ctx.float_type()) {
64+
} else if objtype::isinstance(other, vm.ctx.float_type()) {
6565
let zelf = i32::from_pyobj(zelf) as f64;
6666
let other = objfloat::get_value(other);
6767
zelf == other
@@ -78,9 +78,9 @@ fn int_add(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
7878
required = [(i, Some(vm.ctx.int_type())), (i2, None)]
7979
);
8080
let i = i32::from_pyobj(i);
81-
if objtype::isinstance(i2.clone(), vm.ctx.int_type()) {
81+
if objtype::isinstance(i2, vm.ctx.int_type()) {
8282
Ok(vm.ctx.new_int(i + get_value(i2)))
83-
} else if objtype::isinstance(i2.clone(), vm.ctx.float_type()) {
83+
} else if objtype::isinstance(i2, vm.ctx.float_type()) {
8484
Ok(vm.ctx.new_float(i as f64 + objfloat::get_value(i2)))
8585
} else {
8686
Err(vm.new_type_error(format!("Cannot add {:?} and {:?}", i, i2)))
@@ -94,9 +94,9 @@ fn int_sub(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
9494
required = [(i, Some(vm.ctx.int_type())), (i2, None)]
9595
);
9696
let i = i32::from_pyobj(i);
97-
if objtype::isinstance(i2.clone(), vm.ctx.int_type()) {
97+
if objtype::isinstance(i2, vm.ctx.int_type()) {
9898
Ok(vm.ctx.new_int(i - get_value(i2)))
99-
} else if objtype::isinstance(i2.clone(), vm.ctx.float_type()) {
99+
} else if objtype::isinstance(i2, vm.ctx.float_type()) {
100100
Ok(vm.ctx.new_float(i as f64 - objfloat::get_value(i2)))
101101
} else {
102102
Err(vm.new_type_error(format!("Cannot substract {:?} and {:?}", i, i2)))
@@ -109,7 +109,7 @@ fn int_mul(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
109109
args,
110110
required = [(i, Some(vm.ctx.int_type())), (i2, None)]
111111
);
112-
if objtype::isinstance(i2.clone(), vm.ctx.int_type()) {
112+
if objtype::isinstance(i2, vm.ctx.int_type()) {
113113
Ok(vm.ctx.new_int(get_value(i) * get_value(i2)))
114114
} else {
115115
Err(vm.new_type_error(format!("Cannot multiply {:?} and {:?}", i, i2)))
@@ -123,9 +123,9 @@ fn int_truediv(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
123123
required = [(i, Some(vm.ctx.int_type())), (i2, None)]
124124
);
125125
let v1 = get_value(i);
126-
if objtype::isinstance(i2.clone(), vm.ctx.int_type()) {
126+
if objtype::isinstance(i2, vm.ctx.int_type()) {
127127
Ok(vm.ctx.new_float(v1 as f64 / get_value(i2) as f64))
128-
} else if objtype::isinstance(i2.clone(), vm.ctx.float_type()) {
128+
} else if objtype::isinstance(i2, vm.ctx.float_type()) {
129129
Ok(vm.ctx.new_float(v1 as f64 / objfloat::get_value(i2)))
130130
} else {
131131
Err(vm.new_type_error(format!("Cannot multiply {:?} and {:?}", i, i2)))
@@ -139,7 +139,7 @@ fn int_mod(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
139139
required = [(i, Some(vm.ctx.int_type())), (i2, None)]
140140
);
141141
let v1 = get_value(i);
142-
if objtype::isinstance(i2.clone(), vm.ctx.int_type()) {
142+
if objtype::isinstance(i2, vm.ctx.int_type()) {
143143
Ok(vm.ctx.new_int(v1 % get_value(i2)))
144144
} else {
145145
Err(vm.new_type_error(format!("Cannot modulo {:?} and {:?}", i, i2)))
@@ -153,10 +153,10 @@ fn int_pow(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
153153
required = [(i, Some(vm.ctx.int_type())), (i2, None)]
154154
);
155155
let v1 = get_value(i);
156-
if objtype::isinstance(i2.clone(), vm.ctx.int_type()) {
156+
if objtype::isinstance(i2, vm.ctx.int_type()) {
157157
let v2 = get_value(i2);
158158
Ok(vm.ctx.new_int(v1.pow(v2 as u32)))
159-
} else if objtype::isinstance(i2.clone(), vm.ctx.float_type()) {
159+
} else if objtype::isinstance(i2, vm.ctx.float_type()) {
160160
let v2 = objfloat::get_value(i2);
161161
Ok(vm.ctx.new_float((v1 as f64).powf(v2)))
162162
} else {
@@ -171,7 +171,7 @@ fn int_xor(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
171171
required = [(i, Some(vm.ctx.int_type())), (i2, None)]
172172
);
173173
let v1 = get_value(i);
174-
if objtype::isinstance(i2.clone(), vm.ctx.int_type()) {
174+
if objtype::isinstance(i2, vm.ctx.int_type()) {
175175
let v2 = get_value(i2);
176176
Ok(vm.ctx.new_int(v1 ^ v2))
177177
} else {
@@ -186,7 +186,7 @@ fn int_or(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
186186
required = [(i, Some(vm.ctx.int_type())), (i2, None)]
187187
);
188188
let v1 = get_value(i);
189-
if objtype::isinstance(i2.clone(), vm.ctx.int_type()) {
189+
if objtype::isinstance(i2, vm.ctx.int_type()) {
190190
let v2 = get_value(i2);
191191
Ok(vm.ctx.new_int(v1 | v2))
192192
} else {
@@ -201,7 +201,7 @@ fn int_and(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
201201
required = [(i, Some(vm.ctx.int_type())), (i2, None)]
202202
);
203203
let v1 = get_value(i);
204-
if objtype::isinstance(i2.clone(), vm.ctx.int_type()) {
204+
if objtype::isinstance(i2, vm.ctx.int_type()) {
205205
let v2 = get_value(i2);
206206
Ok(vm.ctx.new_int(v1 & v2))
207207
} else {

vm/src/obj/objlist.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ fn list_eq(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
4141
required = [(zelf, Some(vm.ctx.list_type())), (other, None)]
4242
);
4343

44-
let result = if objtype::isinstance(other.clone(), vm.ctx.list_type()) {
44+
let result = if objtype::isinstance(other, vm.ctx.list_type()) {
4545
let zelf = get_elements(zelf);
4646
let other = get_elements(other);
4747
seq_equal(vm, zelf, other)?
@@ -58,7 +58,7 @@ fn list_add(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
5858
required = [(o, Some(vm.ctx.list_type())), (o2, None)]
5959
);
6060

61-
if objtype::isinstance(o2.clone(), vm.ctx.list_type()) {
61+
if objtype::isinstance(o2, vm.ctx.list_type()) {
6262
let e1 = get_elements(o);
6363
let e2 = get_elements(o2);
6464
let elements = e1.iter().chain(e2.iter()).map(|e| e.clone()).collect();

vm/src/obj/objstr.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ fn str_eq(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
3232
required = [(a, Some(vm.ctx.str_type())), (b, None)]
3333
);
3434

35-
let result = if objtype::isinstance(b.clone(), vm.ctx.str_type()) {
35+
let result = if objtype::isinstance(b, vm.ctx.str_type()) {
3636
get_value(a) == get_value(b)
3737
} else {
3838
false
@@ -86,7 +86,7 @@ fn str_add(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
8686
args,
8787
required = [(s, Some(vm.ctx.str_type())), (s2, None)]
8888
);
89-
if objtype::isinstance(s2.clone(), vm.ctx.str_type()) {
89+
if objtype::isinstance(s2, vm.ctx.str_type()) {
9090
Ok(vm
9191
.ctx
9292
.new_str(format!("{}{}", get_value(&s), get_value(&s2))))
@@ -107,7 +107,7 @@ fn str_mul(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
107107
args,
108108
required = [(s, Some(vm.ctx.str_type())), (s2, None)]
109109
);
110-
if objtype::isinstance(s2.clone(), vm.ctx.int_type()) {
110+
if objtype::isinstance(s2, vm.ctx.int_type()) {
111111
let value1 = get_value(&s);
112112
let value2 = objint::get_value(s2);
113113
let mut result = String::new();

vm/src/obj/objtuple.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ fn tuple_eq(vm: &mut VirtualMachine, args: PyFuncArgs) -> PyResult {
1313
required = [(zelf, Some(vm.ctx.tuple_type())), (other, None)]
1414
);
1515

16-
let result = if objtype::isinstance(other.clone(), vm.ctx.tuple_type()) {
16+
let result = if objtype::isinstance(other, vm.ctx.tuple_type()) {
1717
let zelf = get_elements(zelf);
1818
let other = get_elements(other);
1919
seq_equal(vm, zelf, other)?

vm/src/obj/objtype.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,13 @@ fn _mro(cls: PyObjectRef) -> Option<Vec<PyObjectRef>> {
5454
}
5555
}
5656

57-
pub fn isinstance(obj: PyObjectRef, cls: PyObjectRef) -> bool {
57+
pub fn isinstance(obj: &PyObjectRef, cls: PyObjectRef) -> bool {
5858
let mro = _mro(obj.typ()).unwrap();
5959
mro.into_iter().any(|c| c.is(&cls))
6060
}
6161

62-
pub fn issubclass(typ: PyObjectRef, cls: PyObjectRef) -> bool {
63-
let mro = _mro(typ).unwrap();
62+
pub fn issubclass(typ: &PyObjectRef, cls: PyObjectRef) -> bool {
63+
let mro = _mro(typ.clone()).unwrap();
6464
mro.into_iter().any(|c| c.is(&cls))
6565
}
6666

@@ -121,7 +121,7 @@ pub fn type_call(vm: &mut VirtualMachine, mut args: PyFuncArgs) -> PyResult {
121121
match vm.invoke(init, args.insert(obj.clone())) {
122122
Ok(res) => {
123123
// TODO: assert that return is none?
124-
if !isinstance(res, vm.get_none()) {
124+
if !isinstance(&res, vm.get_none()) {
125125
// panic!("__init__ must return none");
126126
// return Err(vm.new_type_error("__init__ must return None".to_string()));
127127
}

vm/src/objbool.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ pub fn init(context: &PyContext) {
3737
}
3838

3939
pub fn not(vm: &mut VirtualMachine, obj: &PyObjectRef) -> PyResult {
40-
if objtype::isinstance(obj.clone(), vm.ctx.bool_type()) {
40+
if objtype::isinstance(obj, vm.ctx.bool_type()) {
4141
let value = get_value(obj);
4242
Ok(vm.ctx.new_bool(!value))
4343
} else {

vm/src/stdlib/json.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,21 +43,21 @@ impl<'s> serde::Serialize for PyObjectSerializer<'s> {
4343
}
4444
seq.end()
4545
};
46-
if objtype::isinstance(self.pyobject.clone(), self.vm.ctx.str_type()) {
46+
if objtype::isinstance(self.pyobject, self.vm.ctx.str_type()) {
4747
serializer.serialize_str(&objstr::get_value(&self.pyobject))
48-
} else if objtype::isinstance(self.pyobject.clone(), self.vm.ctx.float_type()) {
48+
} else if objtype::isinstance(self.pyobject, self.vm.ctx.float_type()) {
4949
serializer.serialize_f64(objfloat::get_value(self.pyobject))
50-
} else if objtype::isinstance(self.pyobject.clone(), self.vm.ctx.bool_type()) {
50+
} else if objtype::isinstance(self.pyobject, self.vm.ctx.bool_type()) {
5151
serializer.serialize_bool(objbool::get_value(self.pyobject))
52-
} else if objtype::isinstance(self.pyobject.clone(), self.vm.ctx.int_type()) {
52+
} else if objtype::isinstance(self.pyobject, self.vm.ctx.int_type()) {
5353
serializer.serialize_i32(objint::get_value(self.pyobject))
54-
} else if objtype::isinstance(self.pyobject.clone(), self.vm.ctx.list_type()) {
54+
} else if objtype::isinstance(self.pyobject, self.vm.ctx.list_type()) {
5555
let elements = objlist::get_elements(self.pyobject);
5656
serialize_seq_elements(serializer, elements)
57-
} else if objtype::isinstance(self.pyobject.clone(), self.vm.ctx.tuple_type()) {
57+
} else if objtype::isinstance(self.pyobject, self.vm.ctx.tuple_type()) {
5858
let elements = objtuple::get_elements(self.pyobject);
5959
serialize_seq_elements(serializer, elements)
60-
} else if objtype::isinstance(self.pyobject.clone(), self.vm.ctx.dict_type()) {
60+
} else if objtype::isinstance(self.pyobject, self.vm.ctx.dict_type()) {
6161
let elements = objdict::get_elements(self.pyobject);
6262
let mut map = serializer.serialize_map(Some(elements.len()))?;
6363
for (key, e) in elements {

vm/src/vm.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,7 @@ impl VirtualMachine {
263263
// unwind block stack on exception and find any handlers.
264264
// Add an entry in the traceback:
265265
assert!(objtype::isinstance(
266-
exception.clone(),
266+
&exception,
267267
self.ctx.exceptions.base_exception_type.clone()
268268
));
269269
let traceback = self
@@ -966,7 +966,7 @@ impl VirtualMachine {
966966
_ => panic!("Invalid paramter for RAISE_VARARGS, must be between 0 to 3"),
967967
};
968968
if objtype::isinstance(
969-
exception.clone(),
969+
&exception,
970970
self.context().exceptions.base_exception_type.clone(),
971971
) {
972972
info!("Exception raised: {:?}", exception);

0 commit comments

Comments
 (0)