File tree 2 files changed +20
-5
lines changed
2 files changed +20
-5
lines changed Original file line number Diff line number Diff line change @@ -18,3 +18,17 @@ def f():
18
18
raise not ValueError ({1 for i in [1 ,2 ,3 ]})
19
19
20
20
dis .dis (f )
21
+
22
+ class A (object ):
23
+ def f ():
24
+ x += 1
25
+ pass
26
+ def g ():
27
+ for i in range (5 ):
28
+ if i :
29
+ continue
30
+ else :
31
+ break
32
+
33
+ print ("A.f\n " )
34
+ dis .dis (A .f )
Original file line number Diff line number Diff line change @@ -4,13 +4,14 @@ use crate::vm::VirtualMachine;
4
4
5
5
fn dis_dis ( vm : & mut VirtualMachine , args : PyFuncArgs ) -> PyResult {
6
6
arg_check ! ( vm, args, required = [ ( obj, None ) ] ) ;
7
+
8
+ // Method or function:
7
9
let code_name = vm. new_str ( "__code__" . to_string ( ) ) ;
8
- let code = match vm. get_attribute ( obj. clone ( ) , code_name) {
9
- Ok ( co) => co,
10
- Err ( ..) => obj. clone ( ) ,
11
- } ;
10
+ if let Ok ( co) = vm. get_attribute ( obj. clone ( ) , code_name) {
11
+ return dis_disassemble ( vm, PyFuncArgs :: new ( vec ! [ co] , vec ! [ ] ) ) ;
12
+ }
12
13
13
- dis_disassemble ( vm, PyFuncArgs :: new ( vec ! [ code ] , vec ! [ ] ) )
14
+ dis_disassemble ( vm, PyFuncArgs :: new ( vec ! [ obj . clone ( ) ] , vec ! [ ] ) )
14
15
}
15
16
16
17
fn dis_disassemble ( vm : & mut VirtualMachine , args : PyFuncArgs ) -> PyResult {
You can’t perform that action at this time.
0 commit comments