From b1a318631be4d9328d7de140d0755a0d53d084f9 Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Sat, 23 Nov 2024 19:14:00 -0800 Subject: [PATCH] fix reserved casing --- d2compiler/compile_test.go | 2 +- d2ir/d2ir.go | 16 +++++++++------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/d2compiler/compile_test.go b/d2compiler/compile_test.go index d644b7fa9..4156961d7 100644 --- a/d2compiler/compile_test.go +++ b/d2compiler/compile_test.go @@ -2113,7 +2113,7 @@ b tassert.Equal(t, 5, len(g.Objects)) tassert.Equal(t, "a", g.Objects[0].ID) tassert.Equal(t, "b", g.Objects[1].ID) - tassert.Equal(t, `"04:20,11:20"`, g.Objects[2].ID) + tassert.Equal(t, `04:20,11:20`, g.Objects[2].ID) tassert.Equal(t, `loop through each table`, g.Objects[3].ID) tassert.Equal(t, 1, len(g.Objects[0].ChildrenArray)) tassert.Equal(t, 0, len(g.Objects[1].ChildrenArray)) diff --git a/d2ir/d2ir.go b/d2ir/d2ir.go index 87bf71fa5..690b5acb7 100644 --- a/d2ir/d2ir.go +++ b/d2ir/d2ir.go @@ -870,23 +870,25 @@ func (m *Map) ensureField(i int, kp *d2ast.KeyPath, refctx *RefContext, create b } head := kp.Path[i].Unbox() + headString := head.ScalarString() if _, ok := d2ast.ReservedKeywords[strings.ToLower(head.ScalarString())]; ok && head.IsUnquoted() { - if _, ok := d2ast.CompositeReservedKeywords[strings.ToLower(head.ScalarString())]; !ok && i < len(kp.Path)-1 { - return d2parser.Errorf(kp.Path[i].Unbox(), fmt.Sprintf(`"%s" must be the last part of the key`, head.ScalarString())) + headString = strings.ToLower(head.ScalarString()) + if _, ok := d2ast.CompositeReservedKeywords[headString]; !ok && i < len(kp.Path)-1 { + return d2parser.Errorf(kp.Path[i].Unbox(), fmt.Sprintf(`"%s" must be the last part of the key`, headString)) } } - if head.ScalarString() == "_" && head.IsUnquoted() { + if headString == "_" && head.IsUnquoted() { return d2parser.Errorf(kp.Path[i].Unbox(), `parent "_" can only be used in the beginning of paths, e.g. "_.x"`) } - if head.ScalarString() == "classes" && head.IsUnquoted() && NodeBoardKind(m) == "" { - return d2parser.Errorf(kp.Path[i].Unbox(), "%s is only allowed at a board root", head.ScalarString()) + if headString == "classes" && head.IsUnquoted() && NodeBoardKind(m) == "" { + return d2parser.Errorf(kp.Path[i].Unbox(), "%s is only allowed at a board root", headString) } - if findBoardKeyword(head.ScalarString()) != -1 && head.IsUnquoted() && NodeBoardKind(m) == "" { - return d2parser.Errorf(kp.Path[i].Unbox(), "%s is only allowed at a board root", head.ScalarString()) + if findBoardKeyword(headString) != -1 && head.IsUnquoted() && NodeBoardKind(m) == "" { + return d2parser.Errorf(kp.Path[i].Unbox(), "%s is only allowed at a board root", headString) } for _, f := range m.Fields {