fix delete

This commit is contained in:
Alexander Wang 2023-02-22 16:53:01 -08:00
parent 5f3f5da704
commit db1e17a742
No known key found for this signature in database
GPG key ID: D89FA31966BDBECE
3 changed files with 294 additions and 229 deletions

View file

@ -895,6 +895,7 @@ func deleteObject(g *d2graph.Graph, key *d2ast.KeyPath, obj *d2graph.Object) (*d
})
if obj.Attributes.Shape.Value == d2target.ShapeSQLTable || obj.Attributes.Shape.Value == d2target.ShapeClass {
ref.MapKey.Value.Map = nil
ref.MapKey.Primary = ref.MapKey.Value.ScalarBox()
} else if len(withoutSpecial) == 0 {
hoistRefChildren(g, key, ref)
deleteFromMap(ref.Scope, ref.MapKey)

View file

@ -4804,25 +4804,35 @@ A -> B
{
name: "chaos_1",
text: `isfp: {
zmzbsx: {
sxmqb: nqnej {
shape: step
dvdq: sxyjsyk {shape: hexagon}
}
}
}
isfp -- isfp
`,
key: `isfp.zmzbsx`,
text: `cm: {shape: cylinder}
cm <-> cm: {source-arrowhead.shape: cf-one-required}
mt: z
cdpdxz
exp: `isfp: {
sxmqb: nqnej {
shape: step
dvdq: sxyjsyk {shape: hexagon}
}
bymdyk: hdzuj {shape: class}
bymdyk <-> bymdyk
cm
cm <-> bymdyk: {
source-arrowhead.shape: cf-many-required
target-arrowhead.shape: arrow
}
isfp -- isfp
bymdyk <-> cdpdxz
bymdyk -> cm: nk {
target-arrowhead.shape: diamond
target-arrowhead.label: 1
}
`,
key: `bymdyk`,
exp: `cm: {shape: cylinder}
cm <-> cm: {source-arrowhead.shape: cf-one-required}
mt: z
cdpdxz
cm
`,
},
}

View file

@ -2,21 +2,21 @@
"graph": {
"name": "",
"ast": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-7:0:95",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-8:0:94",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-5:1:81",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-0:21:21",
"key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-0:4:4",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-0:2:2",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-0:4:4",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-0:2:2",
"value": [
{
"string": "isfp",
"raw_string": "isfp"
"string": "cm",
"raw_string": "cm"
}
]
}
@ -26,146 +26,35 @@
"primary": {},
"value": {
"map": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:6:6-5:0:80",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:4:4-0:20:20",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:2:10-4:3:79",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:5:5-0:20:20",
"key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:2:10-1:7:15",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:5:5-0:10:10",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:2:10-1:7:15",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:5:5-0:10:10",
"value": [
{
"string": "sxmqb",
"raw_string": "sxmqb"
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {
"primary": {},
"value": {
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:9:17-1:14:22",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:12:12-0:20:20",
"value": [
{
"string": "nqnej",
"raw_string": "nqnej"
}
]
}
},
"value": {
"map": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:15:23-4:2:78",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,2:4:29-2:15:40",
"key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,2:4:29-2:9:34",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,2:4:29-2:9:34",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,2:11:36-2:15:40",
"value": [
{
"string": "step",
"raw_string": "step"
}
]
}
}
}
},
{
"map_key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:4:45-3:34:75",
"key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:4:45-3:8:49",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:4:45-3:8:49",
"value": [
{
"string": "dvdq",
"raw_string": "dvdq"
}
]
}
}
]
},
"primary": {
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:10:51-3:17:58",
"value": [
{
"string": "sxyjsyk",
"raw_string": "sxyjsyk"
}
]
}
},
"value": {
"map": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:18:59-3:33:74",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:19:60-3:33:74",
"key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:19:60-3:24:65",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:19:60-3:24:65",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:26:67-3:33:74",
"value": [
{
"string": "hexagon",
"raw_string": "hexagon"
}
]
}
}
}
}
]
}
}
}
"string": "cylinder",
"raw_string": "cylinder"
}
]
}
@ -179,47 +68,176 @@
},
{
"map_key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,6:0:82-6:12:94",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:0:22-1:52:74",
"edges": [
{
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,6:0:82-6:12:94",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:0:22-1:9:31",
"src": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,6:0:82-6:5:87",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:0:22-1:3:25",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,6:0:82-6:4:86",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:0:22-1:2:24",
"value": [
{
"string": "isfp",
"raw_string": "isfp"
"string": "cm",
"raw_string": "cm"
}
]
}
}
]
},
"src_arrow": "",
"src_arrow": "<",
"dst": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,6:7:89-6:12:94",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:6:28-1:9:31",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,6:8:90-6:12:94",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:7:29-1:9:31",
"value": [
{
"string": "isfp",
"raw_string": "isfp"
"string": "cm",
"raw_string": "cm"
}
]
}
}
]
},
"dst_arrow": ""
"dst_arrow": ">"
}
],
"primary": {},
"value": {
"map": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:11:33-1:51:73",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:12:34-1:51:73",
"key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:12:34-1:34:56",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:12:34-1:28:50",
"value": [
{
"string": "source-arrowhead",
"raw_string": "source-arrowhead"
}
]
}
},
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:29:51-1:34:56",
"value": [
{
"string": "shape",
"raw_string": "shape"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:36:58-1:51:73",
"value": [
{
"string": "cf-one-required",
"raw_string": "cf-one-required"
}
]
}
}
}
}
]
}
}
}
},
{
"map_key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,2:0:75-2:5:80",
"key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,2:0:75-2:2:77",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,2:0:75-2:2:77",
"value": [
{
"string": "mt",
"raw_string": "mt"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,2:4:79-2:5:80",
"value": [
{
"string": "z",
"raw_string": "z"
}
]
}
}
}
},
{
"map_key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:0:81-3:6:87",
"key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:0:81-3:6:87",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:0:81-3:6:87",
"value": [
{
"string": "cdpdxz",
"raw_string": "cdpdxz"
}
]
}
}
]
},
"primary": {},
"value": {}
}
},
{
"map_key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,7:0:91-7:2:93",
"key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,7:0:91-7:2:93",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,7:0:91-7:2:93",
"value": [
{
"string": "cm",
"raw_string": "cm"
}
]
}
}
]
},
"primary": {},
"value": {}
}
}
@ -260,8 +278,24 @@
"height": 0
},
"isCurve": false,
"src_arrow": false,
"dst_arrow": false,
"src_arrow": true,
"srcArrowhead": {
"label": {
"value": ""
},
"style": {},
"near_key": null,
"shape": {
"value": "cf-one-required"
},
"direction": {
"value": ""
},
"constraint": {
"value": ""
}
},
"dst_arrow": true,
"references": [
{
"map_key_edge_index": 0
@ -288,8 +322,8 @@
],
"objects": [
{
"id": "isfp",
"id_val": "isfp",
"id": "cm",
"id_val": "cm",
"label_dimensions": {
"width": 0,
"height": 0
@ -297,15 +331,15 @@
"references": [
{
"key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-0:4:4",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-0:2:2",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-0:4:4",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,0:0:0-0:2:2",
"value": [
{
"string": "isfp",
"raw_string": "isfp"
"string": "cm",
"raw_string": "cm"
}
]
}
@ -317,15 +351,15 @@
},
{
"key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,6:0:82-6:5:87",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:0:22-1:3:25",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,6:0:82-6:4:86",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:0:22-1:2:24",
"value": [
{
"string": "isfp",
"raw_string": "isfp"
"string": "cm",
"raw_string": "cm"
}
]
}
@ -337,15 +371,15 @@
},
{
"key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,6:7:89-6:12:94",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:6:28-1:9:31",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,6:8:90-6:12:94",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:7:29-1:9:31",
"value": [
{
"string": "isfp",
"raw_string": "isfp"
"string": "cm",
"raw_string": "cm"
}
]
}
@ -354,11 +388,78 @@
},
"key_path_index": 0,
"map_key_edge_index": 0
},
{
"key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,7:0:91-7:2:93",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,7:0:91-7:2:93",
"value": [
{
"string": "cm",
"raw_string": "cm"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
}
],
"attributes": {
"label": {
"value": "isfp"
"value": "cm"
},
"style": {},
"near_key": null,
"shape": {
"value": "cylinder"
},
"direction": {
"value": ""
},
"constraint": {
"value": ""
}
},
"zIndex": 0
},
{
"id": "mt",
"id_val": "mt",
"label_dimensions": {
"width": 0,
"height": 0
},
"references": [
{
"key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,2:0:75-2:2:77",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,2:0:75-2:2:77",
"value": [
{
"string": "mt",
"raw_string": "mt"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
}
],
"attributes": {
"label": {
"value": "z"
},
"style": {},
"near_key": null,
@ -375,8 +476,8 @@
"zIndex": 0
},
{
"id": "sxmqb",
"id_val": "sxmqb",
"id": "cdpdxz",
"id_val": "cdpdxz",
"label_dimensions": {
"width": 0,
"height": 0
@ -384,15 +485,15 @@
"references": [
{
"key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:2:10-1:7:15",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:0:81-3:6:87",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,1:2:10-1:7:15",
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:0:81-3:6:87",
"value": [
{
"string": "sxmqb",
"raw_string": "sxmqb"
"string": "cdpdxz",
"raw_string": "cdpdxz"
}
]
}
@ -405,59 +506,12 @@
],
"attributes": {
"label": {
"value": "nqnej"
"value": "cdpdxz"
},
"style": {},
"near_key": null,
"shape": {
"value": "step"
},
"direction": {
"value": ""
},
"constraint": {
"value": ""
}
},
"zIndex": 0
},
{
"id": "dvdq",
"id_val": "dvdq",
"label_dimensions": {
"width": 0,
"height": 0
},
"references": [
{
"key": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:4:45-3:8:49",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2oracle/TestDelete/chaos_1.d2,3:4:45-3:8:49",
"value": [
{
"string": "dvdq",
"raw_string": "dvdq"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
}
],
"attributes": {
"label": {
"value": "sxyjsyk"
},
"style": {},
"near_key": null,
"shape": {
"value": "hexagon"
"value": "rectangle"
},
"direction": {
"value": ""