From 3ffd8adb3f8cfc86740d208db11de50fd5b3cc1d Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Sun, 19 Mar 2023 21:29:11 -0700 Subject: [PATCH 1/4] [ci-base] bump source version --- lib/version/version.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/version/version.go b/lib/version/version.go index dcdadb9b4..7c6323beb 100644 --- a/lib/version/version.go +++ b/lib/version/version.go @@ -1,4 +1,4 @@ package version // Pre-built binaries will have version set correctly during build time. -var Version = "v0.2.5-HEAD" +var Version = "v0.2.6-HEAD" From 04246ef0fb4429cd7b7d9e09bdd16a8fd14a1e9f Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Mon, 20 Mar 2023 11:30:09 -0700 Subject: [PATCH 2/4] tmp fix --- d2oracle/edit.go | 5 +- d2oracle/edit_test.go | 40 +- .../TestDelete/conflicts_generated.exp.json | 220 ++--- ...ddle_container_generated_conflict.exp.json | 866 ++++++++++++++++++ 4 files changed, 1018 insertions(+), 113 deletions(-) create mode 100644 testdata/d2oracle/TestMove/middle_container_generated_conflict.exp.json diff --git a/d2oracle/edit.go b/d2oracle/edit.go index efd7134c6..f1a027b78 100644 --- a/d2oracle/edit.go +++ b/d2oracle/edit.go @@ -643,6 +643,7 @@ func renameConflictsToParent(g *d2graph.Graph, key *d2ast.KeyPath) (*d2graph.Gra return g, nil } + var newIDs []string dedupedRenames := map[string]struct{}{} for _, ref := range obj.References { var absKeys []*d2ast.KeyPath @@ -686,7 +687,6 @@ func renameConflictsToParent(g *d2graph.Graph, key *d2ast.KeyPath) (*d2graph.Gra absKeys = append(absKeys, absKey) } - var newIDs []string renames := make(map[string]string) for _, absKey := range absKeys { ida := d2graph.Key(absKey) @@ -711,7 +711,9 @@ func renameConflictsToParent(g *d2graph.Graph, key *d2ast.KeyPath) (*d2graph.Gra if err != nil { return nil, err } + newIDs = append(newIDs, uniqueKeyStr) + uniqueKey, err := d2parser.ParseKey(uniqueKeyStr) if err != nil { return nil, err @@ -724,6 +726,7 @@ func renameConflictsToParent(g *d2graph.Graph, key *d2ast.KeyPath) (*d2graph.Gra if absKeyStr != renamedKeyStr { renames[absKeyStr] = renamedKeyStr } + dedupedRenames[renamedKeyStr] = struct{}{} } // We need to rename in a conflict-free order // E.g. imagine you have children `Text 4` and `Text`. diff --git a/d2oracle/edit_test.go b/d2oracle/edit_test.go index 00f825e31..020b93484 100644 --- a/d2oracle/edit_test.go +++ b/d2oracle/edit_test.go @@ -1938,6 +1938,42 @@ z: "" exp: `x -> z.y (z) z: "" +`, + }, + { + name: "middle_container_generated_conflict", + + text: `a.Square.Text 3 -> a.Square.Text 2 + +a.Square -> a.Text + +a: { + Text + Square: { + Text 2 + Text 3 + } + Square + + Text 2 +} +`, + key: `a.Square`, + newKey: `Square`, + + exp: `a.Text 3 -> a.Text 4 + +Square -> a.Text + +a: { + Text + + Text 4 + Text 3 + + Text 2 +} +Square `, }, { @@ -4934,10 +4970,10 @@ Square: { exp: `Text 4 -Text: { +Text 2: { Text 2 } -Text 2 +Text `, }, { diff --git a/testdata/d2oracle/TestDelete/conflicts_generated.exp.json b/testdata/d2oracle/TestDelete/conflicts_generated.exp.json index ff5630b3a..e8631525c 100644 --- a/testdata/d2oracle/TestDelete/conflicts_generated.exp.json +++ b/testdata/d2oracle/TestDelete/conflicts_generated.exp.json @@ -30,17 +30,17 @@ }, { "map_key": { - "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,2:0:8-4:1:26", + "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,2:0:8-4:1:28", "key": { - "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,2:0:8-2:4:12", + "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,2:0:8-2:6:14", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,2:0:8-2:4:12", + "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,2:0:8-2:6:14", "value": [ { - "string": "Text", - "raw_string": "Text" + "string": "Text 2", + "raw_string": "Text 2" } ] } @@ -50,17 +50,17 @@ "primary": {}, "value": { "map": { - "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,2:6:14-4:0:25", + "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,2:8:16-4:0:27", "nodes": [ { "map_key": { - "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,3:2:18-3:8:24", + "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,3:2:20-3:8:26", "key": { - "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,3:2:18-3:8:24", + "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,3:2:20-3:8:26", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,3:2:18-3:8:24", + "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,3:2:20-3:8:26", "value": [ { "string": "Text 2", @@ -82,17 +82,17 @@ }, { "map_key": { - "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,5:0:27-5:6:33", + "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,5:0:29-5:4:33", "key": { - "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,5:0:27-5:6:33", + "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,5:0:29-5:4:33", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,5:0:27-5:6:33", + "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,5:0:29-5:4:33", "value": [ { - "string": "Text 2", - "raw_string": "Text 2" + "string": "Text", + "raw_string": "Text" } ] } @@ -179,6 +179,100 @@ }, "zIndex": 0 }, + { + "id": "Text 2", + "id_val": "Text 2", + "label_dimensions": { + "width": 0, + "height": 0 + }, + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,2:0:8-2:6:14", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,2:0:8-2:6:14", + "value": [ + { + "string": "Text 2", + "raw_string": "Text 2" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + } + ], + "attributes": { + "label": { + "value": "Text 2" + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": { + "value": "" + } + }, + "zIndex": 0 + }, + { + "id": "Text 2", + "id_val": "Text 2", + "label_dimensions": { + "width": 0, + "height": 0 + }, + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,3:2:20-3:8:26", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,3:2:20-3:8:26", + "value": [ + { + "string": "Text 2", + "raw_string": "Text 2" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + } + ], + "attributes": { + "label": { + "value": "Text 2" + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": { + "value": "" + } + }, + "zIndex": 0 + }, { "id": "Text", "id_val": "Text", @@ -189,11 +283,11 @@ "references": [ { "key": { - "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,2:0:8-2:4:12", + "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,5:0:29-5:4:33", "path": [ { "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,2:0:8-2:4:12", + "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,5:0:29-5:4:33", "value": [ { "string": "Text", @@ -225,100 +319,6 @@ } }, "zIndex": 0 - }, - { - "id": "Text 2", - "id_val": "Text 2", - "label_dimensions": { - "width": 0, - "height": 0 - }, - "references": [ - { - "key": { - "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,3:2:18-3:8:24", - "path": [ - { - "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,3:2:18-3:8:24", - "value": [ - { - "string": "Text 2", - "raw_string": "Text 2" - } - ] - } - } - ] - }, - "key_path_index": 0, - "map_key_edge_index": -1 - } - ], - "attributes": { - "label": { - "value": "Text 2" - }, - "style": {}, - "near_key": null, - "shape": { - "value": "rectangle" - }, - "direction": { - "value": "" - }, - "constraint": { - "value": "" - } - }, - "zIndex": 0 - }, - { - "id": "Text 2", - "id_val": "Text 2", - "label_dimensions": { - "width": 0, - "height": 0 - }, - "references": [ - { - "key": { - "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,5:0:27-5:6:33", - "path": [ - { - "unquoted_string": { - "range": "d2/testdata/d2oracle/TestDelete/conflicts_generated.d2,5:0:27-5:6:33", - "value": [ - { - "string": "Text 2", - "raw_string": "Text 2" - } - ] - } - } - ] - }, - "key_path_index": 0, - "map_key_edge_index": -1 - } - ], - "attributes": { - "label": { - "value": "Text 2" - }, - "style": {}, - "near_key": null, - "shape": { - "value": "rectangle" - }, - "direction": { - "value": "" - }, - "constraint": { - "value": "" - } - }, - "zIndex": 0 } ] }, diff --git a/testdata/d2oracle/TestMove/middle_container_generated_conflict.exp.json b/testdata/d2oracle/TestMove/middle_container_generated_conflict.exp.json new file mode 100644 index 000000000..88bc19e86 --- /dev/null +++ b/testdata/d2oracle/TestMove/middle_container_generated_conflict.exp.json @@ -0,0 +1,866 @@ +{ + "graph": { + "name": "", + "isFolderOnly": false, + "ast": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,0:0:0-13:0:90", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,0:0:0-0:20:20", + "edges": [ + { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,0:0:0-0:20:20", + "src": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,0:0:0-0:9:9", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,0:0:0-0:1:1", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,0:2:2-0:8:8", + "value": [ + { + "string": "Text 3", + "raw_string": "Text 3" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,0:11:11-0:20:20", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,0:12:12-0:13:13", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,0:14:14-0:20:20", + "value": [ + { + "string": "Text 4", + "raw_string": "Text 4" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "primary": {}, + "value": {} + } + }, + { + "map_key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,2:0:22-2:16:38", + "edges": [ + { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,2:0:22-2:16:38", + "src": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,2:0:22-2:7:29", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,2:0:22-2:6:28", + "value": [ + { + "string": "Square", + "raw_string": "Square" + } + ] + } + } + ] + }, + "src_arrow": "", + "dst": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,2:9:31-2:16:38", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,2:10:32-2:11:33", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,2:12:34-2:16:38", + "value": [ + { + "string": "Text", + "raw_string": "Text" + } + ] + } + } + ] + }, + "dst_arrow": ">" + } + ], + "primary": {}, + "value": {} + } + }, + { + "map_key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,4:0:40-11:1:82", + "key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,4:0:40-4:1:41", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,4:0:40-4:1:41", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,4:3:43-11:0:81", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,5:2:47-5:6:51", + "key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,5:2:47-5:6:51", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,5:2:47-5:6:51", + "value": [ + { + "string": "Text", + "raw_string": "Text" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + }, + { + "map_key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,7:2:55-7:8:61", + "key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,7:2:55-7:8:61", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,7:2:55-7:8:61", + "value": [ + { + "string": "Text 4", + "raw_string": "Text 4" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + }, + { + "map_key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,8:2:64-8:8:70", + "key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,8:2:64-8:8:70", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,8:2:64-8:8:70", + "value": [ + { + "string": "Text 3", + "raw_string": "Text 3" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + }, + { + "map_key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,10:2:74-10:8:80", + "key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,10:2:74-10:8:80", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,10:2:74-10:8:80", + "value": [ + { + "string": "Text 2", + "raw_string": "Text 2" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + } + ] + } + } + } + }, + { + "map_key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,12:0:83-12:6:89", + "key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,12:0:83-12:6:89", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,12:0:83-12:6:89", + "value": [ + { + "string": "Square", + "raw_string": "Square" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + } + ] + }, + "root": { + "id": "", + "id_val": "", + "label_dimensions": { + "width": 0, + "height": 0 + }, + "attributes": { + "label": { + "value": "" + }, + "style": {}, + "near_key": null, + "shape": { + "value": "" + }, + "direction": { + "value": "" + }, + "constraint": { + "value": "" + } + }, + "zIndex": 0 + }, + "edges": [ + { + "index": 0, + "minWidth": 0, + "minHeight": 0, + "label_dimensions": { + "width": 0, + "height": 0 + }, + "isCurve": false, + "src_arrow": false, + "dst_arrow": true, + "references": [ + { + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "" + }, + "style": {}, + "near_key": null, + "shape": { + "value": "" + }, + "direction": { + "value": "" + }, + "constraint": { + "value": "" + } + }, + "zIndex": 0 + }, + { + "index": 0, + "minWidth": 0, + "minHeight": 0, + "label_dimensions": { + "width": 0, + "height": 0 + }, + "isCurve": false, + "src_arrow": false, + "dst_arrow": true, + "references": [ + { + "map_key_edge_index": 0 + } + ], + "attributes": { + "label": { + "value": "" + }, + "style": {}, + "near_key": null, + "shape": { + "value": "" + }, + "direction": { + "value": "" + }, + "constraint": { + "value": "" + } + }, + "zIndex": 0 + } + ], + "objects": [ + { + "id": "a", + "id_val": "a", + "label_dimensions": { + "width": 0, + "height": 0 + }, + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,0:0:0-0:9:9", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,0:0:0-0:1:1", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,0:2:2-0:8:8", + "value": [ + { + "string": "Text 3", + "raw_string": "Text 3" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,0:11:11-0:20:20", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,0:12:12-0:13:13", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,0:14:14-0:20:20", + "value": [ + { + "string": "Text 4", + "raw_string": "Text 4" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,2:9:31-2:16:38", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,2:10:32-2:11:33", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,2:12:34-2:16:38", + "value": [ + { + "string": "Text", + "raw_string": "Text" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,4:0:40-4:1:41", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,4:0:40-4:1:41", + "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": "Text 3", + "id_val": "Text 3", + "label_dimensions": { + "width": 0, + "height": 0 + }, + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,0:0:0-0:9:9", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,0:0:0-0:1:1", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,0:2:2-0:8:8", + "value": [ + { + "string": "Text 3", + "raw_string": "Text 3" + } + ] + } + } + ] + }, + "key_path_index": 1, + "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,8:2:64-8:8:70", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,8:2:64-8:8:70", + "value": [ + { + "string": "Text 3", + "raw_string": "Text 3" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + } + ], + "attributes": { + "label": { + "value": "Text 3" + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": { + "value": "" + } + }, + "zIndex": 0 + }, + { + "id": "Text 4", + "id_val": "Text 4", + "label_dimensions": { + "width": 0, + "height": 0 + }, + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,0:11:11-0:20:20", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,0:12:12-0:13:13", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,0:14:14-0:20:20", + "value": [ + { + "string": "Text 4", + "raw_string": "Text 4" + } + ] + } + } + ] + }, + "key_path_index": 1, + "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,7:2:55-7:8:61", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,7:2:55-7:8:61", + "value": [ + { + "string": "Text 4", + "raw_string": "Text 4" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + } + ], + "attributes": { + "label": { + "value": "Text 4" + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": { + "value": "" + } + }, + "zIndex": 0 + }, + { + "id": "Square", + "id_val": "Square", + "label_dimensions": { + "width": 0, + "height": 0 + }, + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,2:0:22-2:7:29", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,2:0:22-2:6:28", + "value": [ + { + "string": "Square", + "raw_string": "Square" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,12:0:83-12:6:89", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,12:0:83-12:6:89", + "value": [ + { + "string": "Square", + "raw_string": "Square" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + } + ], + "attributes": { + "label": { + "value": "Square" + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": { + "value": "" + } + }, + "zIndex": 0 + }, + { + "id": "Text", + "id_val": "Text", + "label_dimensions": { + "width": 0, + "height": 0 + }, + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,2:9:31-2:16:38", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,2:10:32-2:11:33", + "value": [ + { + "string": "a", + "raw_string": "a" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,2:12:34-2:16:38", + "value": [ + { + "string": "Text", + "raw_string": "Text" + } + ] + } + } + ] + }, + "key_path_index": 1, + "map_key_edge_index": 0 + }, + { + "key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,5:2:47-5:6:51", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,5:2:47-5:6:51", + "value": [ + { + "string": "Text", + "raw_string": "Text" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + } + ], + "attributes": { + "label": { + "value": "Text" + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": { + "value": "" + } + }, + "zIndex": 0 + }, + { + "id": "Text 2", + "id_val": "Text 2", + "label_dimensions": { + "width": 0, + "height": 0 + }, + "references": [ + { + "key": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,10:2:74-10:8:80", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2oracle/TestMove/middle_container_generated_conflict.d2,10:2:74-10:8:80", + "value": [ + { + "string": "Text 2", + "raw_string": "Text 2" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + } + ], + "attributes": { + "label": { + "value": "Text 2" + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": { + "value": "" + } + }, + "zIndex": 0 + } + ] + }, + "err": "" +} From e102fd98c305d478b315fbb645c3b81b2c539145 Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Mon, 20 Mar 2023 11:31:38 -0700 Subject: [PATCH 3/4] cleanup --- d2oracle/edit.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/d2oracle/edit.go b/d2oracle/edit.go index f1a027b78..9b64ff38f 100644 --- a/d2oracle/edit.go +++ b/d2oracle/edit.go @@ -711,9 +711,7 @@ func renameConflictsToParent(g *d2graph.Graph, key *d2ast.KeyPath) (*d2graph.Gra if err != nil { return nil, err } - newIDs = append(newIDs, uniqueKeyStr) - uniqueKey, err := d2parser.ParseKey(uniqueKeyStr) if err != nil { return nil, err From 8a69f36972e1a2ded91f0d534aee7b830ec1aace Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Mon, 20 Mar 2023 11:50:50 -0700 Subject: [PATCH 4/4] commnts --- d2oracle/edit.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/d2oracle/edit.go b/d2oracle/edit.go index 9b64ff38f..dd878fef1 100644 --- a/d2oracle/edit.go +++ b/d2oracle/edit.go @@ -643,7 +643,9 @@ func renameConflictsToParent(g *d2graph.Graph, key *d2ast.KeyPath) (*d2graph.Gra return g, nil } + // Keep a list of newly generated IDs, so that generateUniqueKey considers them for conflict var newIDs []string + // If we already renamed the key from another reference, no need to touch dedupedRenames := map[string]struct{}{} for _, ref := range obj.References { var absKeys []*d2ast.KeyPath @@ -694,6 +696,7 @@ func renameConflictsToParent(g *d2graph.Graph, key *d2ast.KeyPath) (*d2graph.Gra if _, ok := dedupedRenames[absKeyStr]; ok { continue } + // Stale reference dedupedRenames[absKeyStr] = struct{}{} // Do not consider the parent for conflicts, assume the parent will be deleted if ida[len(ida)-1] == ida[len(ida)-2] {