summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-04-05 12:50:43 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2014-04-05 12:51:58 +0300
commit91cbe6033a8fec6b11c414670f7ed75e9598857c (patch)
treec22a69449cf97dcd6a7ea7741453cd5211957844
parentc6813d92db57c0973d0c93e1053deb4181076277 (diff)
downloadmicropython-91cbe6033a8fec6b11c414670f7ed75e9598857c.tar.gz
micropython-91cbe6033a8fec6b11c414670f7ed75e9598857c.zip
py: Allow types to be hashable.
Quite natural to have d[int] = handle_int .
-rw-r--r--py/obj.c2
-rw-r--r--tests/basics/types_hash.py6
2 files changed, 8 insertions, 0 deletions
diff --git a/py/obj.c b/py/obj.c
index e177782a8b..34a48cc681 100644
--- a/py/obj.c
+++ b/py/obj.c
@@ -118,6 +118,8 @@ machine_int_t mp_obj_hash(mp_obj_t o_in) {
return (machine_int_t)o_in;
} else if (MP_OBJ_IS_TYPE(o_in, &mp_type_tuple)) {
return mp_obj_tuple_hash(o_in);
+ } else if (MP_OBJ_IS_TYPE(o_in, &mp_type_type)) {
+ return (machine_int_t)o_in;
// TODO hash class and instances
// TODO delegate to __hash__ method if it exists
diff --git a/tests/basics/types_hash.py b/tests/basics/types_hash.py
new file mode 100644
index 0000000000..2595097d2d
--- /dev/null
+++ b/tests/basics/types_hash.py
@@ -0,0 +1,6 @@
+# Types are hashable
+print(hash(type) != 0)
+print(hash(int) != 0)
+print(hash(list) != 0)
+class Foo: pass
+print(hash(Foo) != 0)