d2ir: fix panic with class overlay
This commit is contained in:
parent
6a4db734d5
commit
74e64ca3d0
3 changed files with 46 additions and 1 deletions
|
|
@ -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",
|
||||
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
11
testdata/d2compiler/TestCompile/import-classes-boards.exp.json
generated
vendored
Normal file
11
testdata/d2compiler/TestCompile/import-classes-boards.exp.json
generated
vendored
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue