d2ir: fix panic with class overlay

This commit is contained in:
Alexander Wang 2025-03-23 07:25:15 -06:00
parent 6a4db734d5
commit 74e64ca3d0
No known key found for this signature in database
GPG key ID: BE3937D0D52D8927
3 changed files with 46 additions and 1 deletions

View file

@ -1714,6 +1714,40 @@ steps: {
assert.Equal(t, 1, len(g.Layers[0].Steps))
},
},
{
name: "import-classes-boards",
text: `classes: {
a: {
label: hi
}
}
layers: {
asdf: {
qwer: {
layers: {
ok: {
bok
}
}
}
}
wert: {
classes: @classes
}
}
`,
files: map[string]string{
"classes.d2": `
c: {
label: bye
}
`,
},
expErr: `d2/testdata/d2compiler/TestCompile/import-classes-boards.d2:10:7: layers is only allowed at a board root`,
},
{
name: "import_url_link",

View file

@ -113,7 +113,7 @@ func (c *compiler) overlayClasses(m *Map) {
if lClasses == nil {
lClasses = classes.Copy(l).(*Field)
l.Fields = append(l.Fields, lClasses)
} else {
} else if lClasses.Map() != nil {
base := classes.Copy(l).(*Field)
OverlayMap(base.Map(), lClasses.Map())
l.DeleteField("classes")

View file

@ -0,0 +1,11 @@
{
"graph": null,
"err": {
"errs": [
{
"range": "d2/testdata/d2compiler/TestCompile/import-classes-boards.d2,9:6:75-9:12:81",
"errmsg": "d2/testdata/d2compiler/TestCompile/import-classes-boards.d2:10:7: layers is only allowed at a board root"
}
]
}
}