From 7d7f084273af723df615a806822100cb4d86271b Mon Sep 17 00:00:00 2001 From: Artem Date: Sat, 15 Jul 2023 16:44:34 +0100 Subject: [PATCH] Fix: nil map --- internal/bcd/ast/ast_test.go | 5 +++++ internal/bcd/ast/map.go | 3 +++ 2 files changed, 8 insertions(+) diff --git a/internal/bcd/ast/ast_test.go b/internal/bcd/ast/ast_test.go index 6f71007f7..64f795a5b 100644 --- a/internal/bcd/ast/ast_test.go +++ b/internal/bcd/ast/ast_test.go @@ -1504,6 +1504,11 @@ func TestTypedAst_FromJSONSchema(t *testing.T) { tree: `{"prim":"list","args":[{"prim":"list","args":[{"prim":"nat"}]}],"annots":["%update_cycles"]}`, data: `{"update_cycles":[{"@list_2":[{"@nat_3":"12"}]}]}`, want: `[[{"int":"12"}]]`, + }, { + name: "nil map", + tree: `{"prim":"map","args":[{"prim":"string"},{"prim":"string"}]}`, + data: `{"@map_1": null}`, + want: `[]`, }, } for _, tt := range tests { diff --git a/internal/bcd/ast/map.go b/internal/bcd/ast/map.go index db4b9fa7d..4ed6b4546 100644 --- a/internal/bcd/ast/map.go +++ b/internal/bcd/ast/map.go @@ -164,6 +164,9 @@ func (m *Map) FromJSONSchema(data map[string]interface{}) error { for key := range data { if key == m.GetName() { val := data[key] + if val == nil { + return nil + } arrVal, ok := val.([]interface{}) if !ok { return errors.Wrapf(consts.ErrInvalidType, "Map.FromJSONSchema %T", val)