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):
916916 assert_raises (RuntimeError , just_iterate , it )
917917
918918 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