diff --git a/d2compiler/compile_test.go b/d2compiler/compile_test.go index bf90f58c2..bfb065256 100644 --- a/d2compiler/compile_test.go +++ b/d2compiler/compile_test.go @@ -2494,16 +2494,18 @@ d2/testdata/d2compiler/TestCompile/grid_edge.d2:7:2: edges into grid diagrams ar grid-rows: 1 a -> b: ok b: { - c -> d: not yet + c -> d: ok now } a: { grid-columns: 1 - e -> f: also not yet + e -> f: also ok now } + a -> b.c: not yet + a.e -> b.c: also not yet } `, - expErr: `d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2:9:3: edge must be on direct child of grid diagram "hey" -d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2:5:3: grid diagrams can only have edges between children right now`, + expErr: `d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2:11:2: edges from grid diagram must be external +d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2:12:2: edges into grid diagrams are not supported yet`, }, { name: "grid_nested", diff --git a/testdata/d2compiler/TestCompile/grid_deeper_edge.exp.json b/testdata/d2compiler/TestCompile/grid_deeper_edge.exp.json index abe81dc64..d823720b8 100644 --- a/testdata/d2compiler/TestCompile/grid_deeper_edge.exp.json +++ b/testdata/d2compiler/TestCompile/grid_deeper_edge.exp.json @@ -1,15 +1,803 @@ { - "graph": null, - "err": { - "errs": [ + "graph": { + "name": "", + "isFolderOnly": false, + "ast": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,0:0:0-11:0:110", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,0:0:0-10:1:109", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,0:0:0-0:3:3", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,0:0:0-0:3:3", + "value": [ + { + "string": "hey", + "raw_string": "hey" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,0:5:5-10:1:109", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,1:1:8-1:13:20", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,1:1:8-1:10:17", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,1:1:8-1:10:17", + "value": [ + { + "string": "grid-rows", + "raw_string": "grid-rows" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "number": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,1:12:19-1:13:20", + "raw": "1", + "value": "1" + } + } + } + }, + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,2:1:22-2:11:32", + "edges": [ + { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,2:1:22-2:7:28", + "src": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,2:1:22-2:2:23", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,2:1:22-2:2:23", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,2:6:27-2:7:28", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,2:6:27-2:7:28", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "primary": {}, + "value": { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,2:9:30-2:11:32", + "value": [ + { + "string": "ok", + "raw_string": "ok" + } + ] + } + } + } + }, + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,3:1:34-5:2:58", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,3:1:34-3:2:35", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,3:1:34-3:2:35", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,3:4:37-5:2:58", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,4:2:41-4:16:55", + "edges": [ + { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,4:2:41-4:8:47", + "src": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,4:2:41-4:3:42", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,4:2:41-4:3:42", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,4:7:46-4:8:47", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,4:7:46-4:8:47", + "value": [ + { + "string": "d", + "raw_string": "d" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "primary": {}, + "value": { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,4:10:49-4:16:55", + "value": [ + { + "string": "ok now", + "raw_string": "ok now" + } + ] + } + } + } + } + ] + } + } + } + }, + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,6:1:60-9:2:107", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,6:1:60-6:2:61", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,6:1:60-6:2:61", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,6:4:63-9:2:107", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,7:2:67-7:17:82", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,7:2:67-7:14:79", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,7:2:67-7:14:79", + "value": [ + { + "string": "grid-columns", + "raw_string": "grid-columns" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "number": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,7:16:81-7:17:82", + "raw": "1", + "value": "1" + } + } + } + }, + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,8:2:85-8:21:104", + "edges": [ + { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,8:2:85-8:8:91", + "src": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,8:2:85-8:3:86", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,8:2:85-8:3:86", + "value": [ + { + "string": "e", + "raw_string": "e" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,8:7:90-8:8:91", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,8:7:90-8:8:91", + "value": [ + { + "string": "f", + "raw_string": "f" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "primary": {}, + "value": { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,8:10:93-8:21:104", + "value": [ + { + "string": "also ok now", + "raw_string": "also ok now" + } + ] + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + "root": { + "id": "", + "id_val": "", + "attributes": { + "label": { + "value": "" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + }, + "edges": [ { - "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,8:2:86-8:8:92", - "errmsg": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2:9:3: edge must be on direct child of grid diagram \"hey\"" + "index": 0, + "isCurve": false, + "src_arrow": false, + "dst_arrow": true, + "references": [ + { + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "ok" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 }, { - "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" + "index": 0, + "isCurve": false, + "src_arrow": false, + "dst_arrow": true, + "references": [ + { + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "ok now" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + }, + { + "index": 0, + "isCurve": false, + "src_arrow": false, + "dst_arrow": true, + "references": [ + { + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "also ok now" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + } + ], + "objects": [ + { + "id": "hey", + "id_val": "hey", + "references": [ + { + "key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,0:0:0-0:3:3", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,0:0:0-0:3:3", + "value": [ + { + "string": "hey", + "raw_string": "hey" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + } + ], + "attributes": { + "label": { + "value": "hey" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": null, + "gridRows": { + "value": "1" + } + }, + "zIndex": 0 + }, + { + "id": "a", + "id_val": "a", + "references": [ + { + "key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,2:1:22-2:2:23", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,2:1:22-2:2:23", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,6:1:60-6:2:61", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,6:1:60-6:2:61", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + } + ], + "attributes": { + "label": { + "value": "a" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": null, + "gridColumns": { + "value": "1" + } + }, + "zIndex": 0 + }, + { + "id": "b", + "id_val": "b", + "references": [ + { + "key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,2:6:27-2:7:28", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,2:6:27-2:7:28", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,3:1:34-3:2:35", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,3:1:34-3:2:35", + "value": [ + { + "string": "b", + "raw_string": "b" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + } + ], + "attributes": { + "label": { + "value": "b" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + }, + { + "id": "c", + "id_val": "c", + "references": [ + { + "key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,4:2:41-4:3:42", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,4:2:41-4:3:42", + "value": [ + { + "string": "c", + "raw_string": "c" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "c" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + }, + { + "id": "d", + "id_val": "d", + "references": [ + { + "key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,4:7:46-4:8:47", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,4:7:46-4:8:47", + "value": [ + { + "string": "d", + "raw_string": "d" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "d" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + }, + { + "id": "e", + "id_val": "e", + "references": [ + { + "key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,8:2:85-8:3:86", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,8:2:85-8:3:86", + "value": [ + { + "string": "e", + "raw_string": "e" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "e" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 + }, + { + "id": "f", + "id_val": "f", + "references": [ + { + "key": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,8:7:90-8:8:91", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/grid_deeper_edge.d2,8:7:90-8:8:91", + "value": [ + { + "string": "f", + "raw_string": "f" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "f" + }, + "labelDimensions": { + "width": 0, + "height": 0 + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": null + }, + "zIndex": 0 } ] - } + }, + "err": null }