File tree Expand file tree Collapse file tree 1 file changed +41
-1
lines changed
graalpython/com.oracle.graal.python.test/src/tests Expand file tree Collapse file tree 1 file changed +41
-1
lines changed Original file line number Diff line number Diff line change @@ -916,4 +916,44 @@ def iterate_and_update(it):
916
916
assert_raises (RuntimeError , just_iterate , it )
917
917
918
918
d = {1 :1 }
919
- assert_raises (RuntimeError , iterate_and_update , d .items ())
919
+ assert_raises (RuntimeError , iterate_and_update , d .items ())
920
+
921
+ def test_decorated_method_dict ():
922
+ def assert_bogus_dict_raises (dm ):
923
+ raised = False
924
+ try :
925
+ dm .__dict__ = 'a'
926
+ except TypeError as e :
927
+ raised = True
928
+ assert "__dict__ must be set to a dictionary, not a 'str'" == str (e ), "invalid error message"
929
+ assert raised
930
+
931
+ class A :
932
+ def f ():
933
+ pass
934
+
935
+ cm = classmethod (A .f )
936
+ cm .x = 42
937
+ assert cm .__dict__ == {'x' : 42 }
938
+ cm .__dict__ = {1 :1 }
939
+ assert cm .__dict__ == {1 :1 }
940
+
941
+ sm = staticmethod (A .f )
942
+ sm .x = 42
943
+ assert sm .__dict__ == {'x' : 42 }
944
+ sm .__dict__ = {1 :1 }
945
+ assert sm .__dict__ == {1 :1 }
946
+
947
+ assert_bogus_dict_raises (classmethod (A .f ))
948
+ assert_bogus_dict_raises (staticmethod (A .f ))
949
+
950
+ def f (): pass
951
+ assert_bogus_dict_raises (classmethod (f ))
952
+ assert_bogus_dict_raises (staticmethod (f ))
953
+
954
+ class A :
955
+ def f (self ):
956
+ def ff (): pass
957
+ assert_bogus_dict_raises (classmethod (ff ))
958
+ assert_bogus_dict_raises (staticmethod (ff ))
959
+ A ().f ()
You can’t perform that action at this time.
0 commit comments