diff --git a/src/pk_core.c b/src/pk_core.c index afb65a7..071f3d1 100644 --- a/src/pk_core.c +++ b/src/pk_core.c @@ -1302,7 +1302,11 @@ bool varContains(PKVM* vm, Var elem, Var container) { return false; } break; - case OBJ_MAP: + case OBJ_MAP: { + Map* map = (Map*)AS_OBJ(container); + return !IS_UNDEF(mapGet(map, elem)); + } break; + case OBJ_RANGE: case OBJ_SCRIPT: case OBJ_FUNC: diff --git a/tests/lang/basics.pk b/tests/lang/basics.pk index 28633c8..ccb7d05 100644 --- a/tests/lang/basics.pk +++ b/tests/lang/basics.pk @@ -31,6 +31,8 @@ l3 = l2 + l1 + l2; assert(l3 == [1,1,2,3,1,1,1,2,3]) assert(!('abc' in 'a')) assert(42 in [12, 42, 3.14]) assert(!('a' in ['abc'])) +assert('key' in {'key':'value'}) +assert(!('foo' in {'bar':'baz'})) ## Builtin functions tests. assert(to_string(42) == '42')