fix
This commit is contained in:
parent
5be1f6c187
commit
905a9317a2
4 changed files with 152 additions and 3 deletions
|
|
@ -840,6 +840,11 @@ func (c *compiler) nullify(g *d2graph.Graph) {
|
||||||
g.DeleteObject(obj)
|
g.DeleteObject(obj)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for _, e := range g.Edges {
|
||||||
|
if len(e.References) > 0 && e.References[len(e.References)-1].Nulled() {
|
||||||
|
g.DeleteEdge(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO add more, e.g. C, bash
|
// TODO add more, e.g. C, bash
|
||||||
|
|
|
||||||
|
|
@ -95,6 +95,15 @@ func (g *Graph) DeleteObject(obj *Object) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (g *Graph) DeleteEdge(e *Edge) {
|
||||||
|
for i, e2 := range g.Edges {
|
||||||
|
if e == e2 {
|
||||||
|
g.Edges = append(g.Edges[:i], g.Edges[i+1:]...)
|
||||||
|
i--
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type LayoutGraph func(context.Context, *Graph) error
|
type LayoutGraph func(context.Context, *Graph) error
|
||||||
|
|
||||||
// TODO consider having different Scalar types
|
// TODO consider having different Scalar types
|
||||||
|
|
@ -216,7 +225,7 @@ type Reference struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Reference) Nulled() bool {
|
func (r *Reference) Nulled() bool {
|
||||||
return r.MapKey != nil && r.MapKey.Value.Null != nil
|
return r.MapKey != nil && len(r.MapKey.Edges) == 0 && r.MapKey.Value.Null != nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r Reference) MapKeyEdgeDest() bool {
|
func (r Reference) MapKeyEdgeDest() bool {
|
||||||
|
|
@ -1146,6 +1155,10 @@ type EdgeReference struct {
|
||||||
ScopeAST *d2ast.Map `json:"-"`
|
ScopeAST *d2ast.Map `json:"-"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (er *EdgeReference) Nulled() bool {
|
||||||
|
return er.MapKey != nil && er.MapKey.Value.Null != nil
|
||||||
|
}
|
||||||
|
|
||||||
func (e *Edge) GetAstEdge() *d2ast.Edge {
|
func (e *Edge) GetAstEdge() *d2ast.Edge {
|
||||||
return e.References[0].Edge
|
return e.References[0].Edge
|
||||||
}
|
}
|
||||||
|
|
|
||||||
133
testdata/d2compiler/TestCompile2/nulls/basic/edge.exp.json
generated
vendored
133
testdata/d2compiler/TestCompile2/nulls/basic/edge.exp.json
generated
vendored
|
|
@ -132,7 +132,138 @@
|
||||||
"zIndex": 0
|
"zIndex": 0
|
||||||
},
|
},
|
||||||
"edges": null,
|
"edges": null,
|
||||||
"objects": null
|
"objects": [
|
||||||
|
{
|
||||||
|
"id": "a",
|
||||||
|
"id_val": "a",
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"key": {
|
||||||
|
"range": "d2/testdata/d2compiler/TestCompile2/nulls/basic/edge.d2,1:0:1-1:1:2",
|
||||||
|
"path": [
|
||||||
|
{
|
||||||
|
"unquoted_string": {
|
||||||
|
"range": "d2/testdata/d2compiler/TestCompile2/nulls/basic/edge.d2,1:0:1-1:1:2",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"string": "a",
|
||||||
|
"raw_string": "a"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"key_path_index": 0,
|
||||||
|
"map_key_edge_index": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": {
|
||||||
|
"range": "d2/testdata/d2compiler/TestCompile2/nulls/basic/edge.d2,2:1:9-2:2:10",
|
||||||
|
"path": [
|
||||||
|
{
|
||||||
|
"unquoted_string": {
|
||||||
|
"range": "d2/testdata/d2compiler/TestCompile2/nulls/basic/edge.d2,2:1:9-2:2:10",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"string": "a",
|
||||||
|
"raw_string": "a"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"key_path_index": 0,
|
||||||
|
"map_key_edge_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"attributes": {
|
||||||
|
"label": {
|
||||||
|
"value": "a"
|
||||||
|
},
|
||||||
|
"labelDimensions": {
|
||||||
|
"width": 0,
|
||||||
|
"height": 0
|
||||||
|
},
|
||||||
|
"style": {},
|
||||||
|
"near_key": null,
|
||||||
|
"shape": {
|
||||||
|
"value": "rectangle"
|
||||||
|
},
|
||||||
|
"direction": {
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"constraint": null
|
||||||
|
},
|
||||||
|
"zIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "b",
|
||||||
|
"id_val": "b",
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"key": {
|
||||||
|
"range": "d2/testdata/d2compiler/TestCompile2/nulls/basic/edge.d2,1:5:6-1:6:7",
|
||||||
|
"path": [
|
||||||
|
{
|
||||||
|
"unquoted_string": {
|
||||||
|
"range": "d2/testdata/d2compiler/TestCompile2/nulls/basic/edge.d2,1:5:6-1:6:7",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"string": "b",
|
||||||
|
"raw_string": "b"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"key_path_index": 0,
|
||||||
|
"map_key_edge_index": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": {
|
||||||
|
"range": "d2/testdata/d2compiler/TestCompile2/nulls/basic/edge.d2,2:6:14-2:7:15",
|
||||||
|
"path": [
|
||||||
|
{
|
||||||
|
"unquoted_string": {
|
||||||
|
"range": "d2/testdata/d2compiler/TestCompile2/nulls/basic/edge.d2,2:6:14-2:7:15",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"string": "b",
|
||||||
|
"raw_string": "b"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"key_path_index": 0,
|
||||||
|
"map_key_edge_index": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"attributes": {
|
||||||
|
"label": {
|
||||||
|
"value": "b"
|
||||||
|
},
|
||||||
|
"labelDimensions": {
|
||||||
|
"width": 0,
|
||||||
|
"height": 0
|
||||||
|
},
|
||||||
|
"style": {},
|
||||||
|
"near_key": null,
|
||||||
|
"shape": {
|
||||||
|
"value": "rectangle"
|
||||||
|
},
|
||||||
|
"direction": {
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"constraint": null
|
||||||
|
},
|
||||||
|
"zIndex": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"err": null
|
"err": null
|
||||||
}
|
}
|
||||||
|
|
|
||||||
2
testdata/d2compiler/TestCompile2/nulls/reappear/edge.exp.json
generated
vendored
2
testdata/d2compiler/TestCompile2/nulls/reappear/edge.exp.json
generated
vendored
|
|
@ -179,7 +179,7 @@
|
||||||
},
|
},
|
||||||
"edges": [
|
"edges": [
|
||||||
{
|
{
|
||||||
"index": 0,
|
"index": 1,
|
||||||
"isCurve": false,
|
"isCurve": false,
|
||||||
"src_arrow": false,
|
"src_arrow": false,
|
||||||
"dst_arrow": true,
|
"dst_arrow": true,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue