diff --git a/d2compiler/compile.go b/d2compiler/compile.go index 20d7baada..94063206c 100644 --- a/d2compiler/compile.go +++ b/d2compiler/compile.go @@ -1074,9 +1074,16 @@ func (c *compiler) validateEdges(g *d2graph.Graph) { for _, edge := range g.Edges { srcGrid := edge.Src.Parent.ClosestGridDiagram() dstGrid := edge.Dst.Parent.ClosestGridDiagram() - if (srcGrid != nil || dstGrid != nil) && srcGrid != dstGrid { - c.errorf(edge.GetAstEdge(), "edges into grid diagrams are not supported yet") - continue + if srcGrid != nil || dstGrid != nil { + if srcGrid != dstGrid { + c.errorf(edge.GetAstEdge(), "edges into grid diagrams are not supported yet") + continue + } else { + if srcGrid != edge.Src.Parent || dstGrid != edge.Dst.Parent { + c.errorf(edge.GetAstEdge(), "grid diagrams can only have edges between children right now") + continue + } + } } } } diff --git a/d2compiler/compile_test.go b/d2compiler/compile_test.go index 06d198501..d9af486c3 100644 --- a/d2compiler/compile_test.go +++ b/d2compiler/compile_test.go @@ -2488,6 +2488,18 @@ d2/testdata/d2compiler/TestCompile/grid_gap_negative.d2:3:16: vertical-gap must d2/testdata/d2compiler/TestCompile/grid_edge.d2:6:2: edges into grid diagrams are not supported yet d2/testdata/d2compiler/TestCompile/grid_edge.d2:7:2: edges into grid diagrams are not supported yet`, }, + { + name: "grid_deeper_edge", + text: `hey: { + grid-rows: 1 + a -> b: ok + b: { + c -> d: not yet + } +} +`, + expErr: `d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2:5:3: grid diagrams can only have edges between children right now`, + }, { name: "grid_nested", text: `hey: { diff --git a/testdata/d2compiler/TestCompile/grid_deeper_edge.exp.json b/testdata/d2compiler/TestCompile/grid_deeper_edge.exp.json new file mode 100644 index 000000000..d3247b6fb --- /dev/null +++ b/testdata/d2compiler/TestCompile/grid_deeper_edge.exp.json @@ -0,0 +1,11 @@ +{ + "graph": null, + "err": { + "errs": [ + { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,4:2:41-4:8:47", + "errmsg": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2:5:3: grid diagrams can only have edges between children right now" + } + ] + } +}