From a1048e99c8e41e18ef84cc93184b165dee169fa5 Mon Sep 17 00:00:00 2001 From: John Kerl Date: Thu, 26 Nov 2020 00:13:59 -0500 Subject: [PATCH] accept-case haskey --- go/cases-to-do.txt | 35 ++++++++++--------- .../types/mlrval_functions_collections.go | 9 +++-- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/go/cases-to-do.txt b/go/cases-to-do.txt index c4e8edc3a..4260bee84 100644 --- a/go/cases-to-do.txt +++ b/go/cases-to-do.txt @@ -50,23 +50,6 @@ rrv ./reg-test/cases/case-c-dsl-haskey.sh rrv ./reg-test/cases/case-c-dsl-extended-typeof.sh -rrv ./reg-test/cases/case-c-dsl-is-predicates.sh -* {1:2} is empty-map in Go; should step up (populate) or step down (error) - - func (this *Mlrval) MapPut(key *Mlrval, value *Mlrval) { - if this.mvtype != MT_MAP { - // TODO: need to be careful about semantics here. - // Silent no-ops are not good UX ... - return - } - if key.mvtype != MT_STRING { - // TODO: need to be careful about semantics here. - // Silent no-ops are not good UX ... - return - } - this.mapval.PutCopy(&key.printrep, value) - } - ================================================================ PARTIALLY IMPLEMENTED: @@ -185,3 +168,21 @@ rrv ./reg-test/cases/case-c-uniq.sh rrv ./reg-test/cases/case-c-utf8-bom.sh ================================================================ + +rrv ./reg-test/cases/case-c-localvar-unsets.sh + +rrv -C5 ./reg-test/cases/case-c-dsl-for-oosvar-loops.sh +rrv ./reg-test/cases/case-c-dsl-mapvar-assignments.sh + +rrv ./reg-test/cases/case-c-dsl-split-join.sh +rrv -C5 ./reg-test/cases/case-c-dsl-asserting.sh +rrv -C1 ./reg-test/cases/case-c-dsl-length-depth-leafcount.sh +* int map keys + +rrv -C1 ./reg-test/cases/case-c-dsl-mapvar-for-loops.sh +* int map keys + +rrv ./reg-test/cases/case-c-dsl-haskey.sh +* haskey({3:4}, 3) + +rrv ./reg-test/cases/case-c-dsl-extended-typeof.sh diff --git a/go/src/miller/types/mlrval_functions_collections.go b/go/src/miller/types/mlrval_functions_collections.go index 8d3ce4f20..318428e8f 100644 --- a/go/src/miller/types/mlrval_functions_collections.go +++ b/go/src/miller/types/mlrval_functions_collections.go @@ -154,13 +154,12 @@ func has_key_in_array(ma, mb *Mlrval) Mlrval { } func has_key_in_map(ma, mb *Mlrval) Mlrval { - if mb.mvtype == MT_INT { - return MlrvalFromFalse() - } - if mb.mvtype != MT_STRING { + if mb.mvtype == MT_STRING || mb.mvtype == MT_INT { + s := mb.String() + return MlrvalFromBool(ma.mapval.Has(&s)) + } else { return MlrvalFromError() } - return MlrvalFromBool(ma.mapval.Has(&mb.printrep)) } func MlrvalHasKey(ma, mb *Mlrval) Mlrval {