diff --git a/d2oracle/edit_test.go b/d2oracle/edit_test.go index 489f3384b..6dd62ffec 100644 --- a/d2oracle/edit_test.go +++ b/d2oracle/edit_test.go @@ -2220,7 +2220,7 @@ a.b.c: { `, }, { - name: "near", + name: "invalid-near", text: `x: { near: y @@ -2234,6 +2234,33 @@ y near: x.y y } +`, + expErr: `failed to move: "y" to "x.y": failed to recompile: +x: { + near: x.y + y +} + +d2/testdata/d2oracle/TestMove/invalid-near.d2:2:9: near keys cannot be set to an descendant`, + }, + { + name: "near", + + text: `x: { + near: y +} +a +y +`, + key: `y`, + newKey: `a.y`, + + exp: `x: { + near: a.y +} +a: { + y +} `, }, { diff --git a/testdata/d2oracle/TestMove/invalid-near.exp.json b/testdata/d2oracle/TestMove/invalid-near.exp.json new file mode 100644 index 000000000..f557d2637 --- /dev/null +++ b/testdata/d2oracle/TestMove/invalid-near.exp.json @@ -0,0 +1,4 @@ +{ + "graph": null, + "err": "failed to move: \"y\" to \"x.y\": failed to recompile:\nx: {\n near: x.y\n y\n}\n\nd2/testdata/d2oracle/TestMove/invalid-near.d2:2:9: near keys cannot be set to an descendant" +} diff --git a/testdata/d2oracle/TestMove/near.exp.json b/testdata/d2oracle/TestMove/near.exp.json index 81e71d5e4..1bb25dbb0 100644 --- a/testdata/d2oracle/TestMove/near.exp.json +++ b/testdata/d2oracle/TestMove/near.exp.json @@ -2,11 +2,11 @@ "graph": { "name": "", "ast": { - "range": "d2/testdata/d2oracle/TestMove/near.d2,0:0:0-4:0:23", + "range": "d2/testdata/d2oracle/TestMove/near.d2,0:0:0-6:0:30", "nodes": [ { "map_key": { - "range": "d2/testdata/d2oracle/TestMove/near.d2,0:0:0-3:1:22", + "range": "d2/testdata/d2oracle/TestMove/near.d2,0:0:0-2:1:18", "key": { "range": "d2/testdata/d2oracle/TestMove/near.d2,0:0:0-0:1:1", "path": [ @@ -26,7 +26,7 @@ "primary": {}, "value": { "map": { - "range": "d2/testdata/d2oracle/TestMove/near.d2,0:3:3-3:0:21", + "range": "d2/testdata/d2oracle/TestMove/near.d2,0:3:3-2:0:17", "nodes": [ { "map_key": { @@ -53,23 +53,52 @@ "range": "d2/testdata/d2oracle/TestMove/near.d2,1:8:13-1:11:16", "value": [ { - "string": "x.y", - "raw_string": "x.y" + "string": "a.y", + "raw_string": "a.y" } ] } } } - }, + } + ] + } + } + } + }, + { + "map_key": { + "range": "d2/testdata/d2oracle/TestMove/near.d2,3:0:19-5:1:29", + "key": { + "range": "d2/testdata/d2oracle/TestMove/near.d2,3:0:19-3:1:20", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/near.d2,3:0:19-3:1:20", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2oracle/TestMove/near.d2,3:3:22-5:0:28", + "nodes": [ { "map_key": { - "range": "d2/testdata/d2oracle/TestMove/near.d2,2:2:19-2:3:20", + "range": "d2/testdata/d2oracle/TestMove/near.d2,4:2:26-4:3:27", "key": { - "range": "d2/testdata/d2oracle/TestMove/near.d2,2:2:19-2:3:20", + "range": "d2/testdata/d2oracle/TestMove/near.d2,4:2:26-4:3:27", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestMove/near.d2,2:2:19-2:3:20", + "range": "d2/testdata/d2oracle/TestMove/near.d2,4:2:26-4:3:27", "value": [ { "string": "y", @@ -160,8 +189,8 @@ "range": ",0:0:0-0:1:1", "value": [ { - "string": "x", - "raw_string": "x" + "string": "a", + "raw_string": "a" } ] } @@ -191,6 +220,53 @@ }, "zIndex": 0 }, + { + "id": "a", + "id_val": "a", + "label_dimensions": { + "width": 0, + "height": 0 + }, + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestMove/near.d2,3:0:19-3:1:20", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/near.d2,3:0:19-3:1:20", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + } + ], + "attributes": { + "label": { + "value": "a" + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": { + "value": "" + } + }, + "zIndex": 0 + }, { "id": "y", "id_val": "y", @@ -201,11 +277,11 @@ "references": [ { "key": { - "range": "d2/testdata/d2oracle/TestMove/near.d2,2:2:19-2:3:20", + "range": "d2/testdata/d2oracle/TestMove/near.d2,4:2:26-4:3:27", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestMove/near.d2,2:2:19-2:3:20", + "range": "d2/testdata/d2oracle/TestMove/near.d2,4:2:26-4:3:27", "value": [ { "string": "y",