From 5c96ffe6a1c7b302d70de42af0142bf08ec60ebb Mon Sep 17 00:00:00 2001 From: Alexander Wang Date: Wed, 1 Mar 2023 11:27:18 -0800 Subject: [PATCH] save --- d2compiler/compile.go | 26 +- d2compiler/compile_test.go | 35 + .../link-board-underscore-not-found.exp.json | 12 + .../link-board-underscore.exp.json | 1084 +++++++++++++++++ 4 files changed, 1147 insertions(+), 10 deletions(-) create mode 100644 testdata/d2compiler/TestCompile/link-board-underscore-not-found.exp.json create mode 100644 testdata/d2compiler/TestCompile/link-board-underscore.exp.json diff --git a/d2compiler/compile.go b/d2compiler/compile.go index 11765c577..2e570b589 100644 --- a/d2compiler/compile.go +++ b/d2compiler/compile.go @@ -56,7 +56,7 @@ func compileIR(ast *d2ast.Map, m *d2ir.Map) (*d2graph.Graph, error) { if len(c.err.Errors) > 0 { return nil, c.err } - c.compileBoardLink(g, m) + c.compileBoardLink(g) if len(c.err.Errors) > 0 { return nil, c.err } @@ -722,7 +722,7 @@ func (c *compiler) validateNear(g *d2graph.Graph) { } } -func (c *compiler) compileBoardLink(g *d2graph.Graph, ir *d2ir.Map) { +func (c *compiler) compileBoardLink(g *d2graph.Graph) { for _, obj := range g.Objects { if obj.Attributes.Link == nil { continue @@ -735,24 +735,34 @@ func (c *compiler) compileBoardLink(g *d2graph.Graph, ir *d2ir.Map) { } switch linkKey.Path[0].Unbox().ScalarString() { - // TODO underscore - case "layers", "scenarios", "steps": + // Starting a link with one of the following means it is targeting a board + case "layers", "scenarios", "steps", "_": default: continue } - obj.LinkedBoard = c.findBoard(g, ir, linkKey.IDA()) + obj.LinkedBoard = c.findBoard(g, linkKey.IDA()) if obj.LinkedBoard == nil { c.errorf(obj.Attributes.Link.MapKey, "link key %#v to board not found", obj.Attributes.Link.Value) continue } } + for _, b := range append(append(g.Layers, g.Scenarios...), g.Steps...) { + c.compileBoardLink(b) + } } -func (c *compiler) findBoard(g *d2graph.Graph, ir *d2ir.Map, ida []string) *d2graph.Graph { +func (c *compiler) findBoard(g *d2graph.Graph, ida []string) *d2graph.Graph { var currType string for _, p := range ida { + if g == nil { + return nil + } + if p == "_" { + g = g.Parent + continue + } switch p { case "layers", "scenarios", "steps": currType = p @@ -779,10 +789,6 @@ func (c *compiler) findBoard(g *d2graph.Graph, ir *d2ir.Map, ida []string) *d2gr } } - if board == nil { - return nil - } - g = board } diff --git a/d2compiler/compile_test.go b/d2compiler/compile_test.go index a5f3e5022..150d6e35c 100644 --- a/d2compiler/compile_test.go +++ b/d2compiler/compile_test.go @@ -2092,6 +2092,41 @@ layers: { tassert.Equal(t, ".layers.x.layers.x", g.Objects[0].LinkedBoard.AbsID()) }, }, + { + name: "link-board-underscore", + text: `x +layers: { + x: { + yo + layers: { + x: { + hello.link: _._.layers.x + hey.link: _ + } + } + } +}`, + assertions: func(t *testing.T, g *d2graph.Graph) { + tassert.NotNil(t, g.Layers[0].Layers[0].Objects[0].LinkedBoard) + tassert.Equal(t, ".layers.x", g.Layers[0].Layers[0].Objects[0].LinkedBoard.AbsID()) + tassert.Equal(t, ".layers.x", g.Layers[0].Layers[0].Objects[1].LinkedBoard.AbsID()) + }, + }, + { + name: "link-board-underscore-not-found", + text: `x +layers: { + x: { + yo + layers: { + x: { + hello.link: _._._ + } + } + } +}`, + expErr: `d2/testdata/d2compiler/TestCompile/link-board-underscore-not-found.d2:7:17: link key "_._._" to board not found`, + }, } for _, tc := range testCases { diff --git a/testdata/d2compiler/TestCompile/link-board-underscore-not-found.exp.json b/testdata/d2compiler/TestCompile/link-board-underscore-not-found.exp.json new file mode 100644 index 000000000..b74ef0923 --- /dev/null +++ b/testdata/d2compiler/TestCompile/link-board-underscore-not-found.exp.json @@ -0,0 +1,12 @@ +{ + "graph": null, + "err": { + "ioerr": null, + "errs": [ + { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore-not-found.d2,6:16:62-6:21:67", + "errmsg": "d2/testdata/d2compiler/TestCompile/link-board-underscore-not-found.d2:7:17: link key \"_._._\" to board not found" + } + ] + } +} diff --git a/testdata/d2compiler/TestCompile/link-board-underscore.exp.json b/testdata/d2compiler/TestCompile/link-board-underscore.exp.json new file mode 100644 index 000000000..4c1a80549 --- /dev/null +++ b/testdata/d2compiler/TestCompile/link-board-underscore.exp.json @@ -0,0 +1,1084 @@ +{ + "graph": { + "name": "", + "isFolderOnly": false, + "ast": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,0:0:0-11:1:107", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,0:0:0-0:1:1", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,0:0:0-0:1:1", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + }, + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,1:0:2-11:1:107", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,1:0:2-1:6:8", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,1:0:2-1:6:8", + "value": [ + { + "string": "layers", + "raw_string": "layers" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,1:8:10-11:0:106", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,2:1:13-10:3:105", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,2:1:13-2:2:14", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,2:1:13-2:2:14", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,2:4:16-10:2:104", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,3:3:21-3:5:23", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,3:3:21-3:5:23", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,3:3:21-3:5:23", + "value": [ + { + "string": "yo", + "raw_string": "yo" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + }, + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,4:4:28-9:5:101", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,4:4:28-4:10:34", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,4:4:28-4:10:34", + "value": [ + { + "string": "layers", + "raw_string": "layers" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,4:12:36-9:4:100", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,5:3:41-8:4:95", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,5:3:41-5:4:42", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,5:3:41-5:4:42", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,5:6:44-8:3:94", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,6:16:62-6:28:74", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,6:4:50-6:14:60", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,6:4:50-6:9:55", + "value": [ + { + "string": "hello", + "raw_string": "hello" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,6:10:56-6:14:60", + "value": [ + { + "string": "link", + "raw_string": "link" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,6:16:62-6:28:74", + "value": [ + { + "string": "_._.layers.x", + "raw_string": "_._.layers.x" + } + ] + } + } + } + }, + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,7:14:89-7:15:90", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,7:4:79-7:12:87", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,7:4:79-7:7:82", + "value": [ + { + "string": "hey", + "raw_string": "hey" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,7:8:83-7:12:87", + "value": [ + { + "string": "link", + "raw_string": "link" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,7:14:89-7:15:90", + "value": [ + { + "string": "_", + "raw_string": "_" + } + ] + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + "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": null, + "objects": [ + { + "id": "x", + "id_val": "x", + "label_dimensions": { + "width": 0, + "height": 0 + }, + "references": [ + { + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,0:0:0-0:1:1", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + } + ], + "attributes": { + "label": { + "value": "x" + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": { + "value": "" + } + }, + "zIndex": 0 + } + ], + "layers": [ + { + "name": "x", + "isFolderOnly": false, + "ast": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,0:0:0-11:1:107", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,0:0:0-0:1:1", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,0:0:0-0:1:1", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + }, + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,1:0:2-11:1:107", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,1:0:2-1:6:8", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,1:0:2-1:6:8", + "value": [ + { + "string": "layers", + "raw_string": "layers" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,1:8:10-11:0:106", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,2:1:13-10:3:105", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,2:1:13-2:2:14", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,2:1:13-2:2:14", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,2:4:16-10:2:104", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,3:3:21-3:5:23", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,3:3:21-3:5:23", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,3:3:21-3:5:23", + "value": [ + { + "string": "yo", + "raw_string": "yo" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + }, + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,4:4:28-9:5:101", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,4:4:28-4:10:34", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,4:4:28-4:10:34", + "value": [ + { + "string": "layers", + "raw_string": "layers" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,4:12:36-9:4:100", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,5:3:41-8:4:95", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,5:3:41-5:4:42", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,5:3:41-5:4:42", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,5:6:44-8:3:94", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,6:16:62-6:28:74", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,6:4:50-6:14:60", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,6:4:50-6:9:55", + "value": [ + { + "string": "hello", + "raw_string": "hello" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,6:10:56-6:14:60", + "value": [ + { + "string": "link", + "raw_string": "link" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,6:16:62-6:28:74", + "value": [ + { + "string": "_._.layers.x", + "raw_string": "_._.layers.x" + } + ] + } + } + } + }, + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,7:14:89-7:15:90", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,7:4:79-7:12:87", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,7:4:79-7:7:82", + "value": [ + { + "string": "hey", + "raw_string": "hey" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,7:8:83-7:12:87", + "value": [ + { + "string": "link", + "raw_string": "link" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,7:14:89-7:15:90", + "value": [ + { + "string": "_", + "raw_string": "_" + } + ] + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + "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": null, + "objects": [ + { + "id": "yo", + "id_val": "yo", + "label_dimensions": { + "width": 0, + "height": 0 + }, + "references": [ + { + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,3:3:21-3:5:23", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,3:3:21-3:5:23", + "value": [ + { + "string": "yo", + "raw_string": "yo" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + } + ], + "attributes": { + "label": { + "value": "yo" + }, + "style": {}, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": { + "value": "" + } + }, + "zIndex": 0 + } + ], + "layers": [ + { + "name": "x", + "isFolderOnly": false, + "ast": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,0:0:0-11:1:107", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,0:0:0-0:1:1", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,0:0:0-0:1:1", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,0:0:0-0:1:1", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + }, + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,1:0:2-11:1:107", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,1:0:2-1:6:8", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,1:0:2-1:6:8", + "value": [ + { + "string": "layers", + "raw_string": "layers" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,1:8:10-11:0:106", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,2:1:13-10:3:105", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,2:1:13-2:2:14", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,2:1:13-2:2:14", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,2:4:16-10:2:104", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,3:3:21-3:5:23", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,3:3:21-3:5:23", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,3:3:21-3:5:23", + "value": [ + { + "string": "yo", + "raw_string": "yo" + } + ] + } + } + ] + }, + "primary": {}, + "value": {} + } + }, + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,4:4:28-9:5:101", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,4:4:28-4:10:34", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,4:4:28-4:10:34", + "value": [ + { + "string": "layers", + "raw_string": "layers" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,4:12:36-9:4:100", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,5:3:41-8:4:95", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,5:3:41-5:4:42", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,5:3:41-5:4:42", + "value": [ + { + "string": "x", + "raw_string": "x" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "map": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,5:6:44-8:3:94", + "nodes": [ + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,6:16:62-6:28:74", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,6:4:50-6:14:60", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,6:4:50-6:9:55", + "value": [ + { + "string": "hello", + "raw_string": "hello" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,6:10:56-6:14:60", + "value": [ + { + "string": "link", + "raw_string": "link" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,6:16:62-6:28:74", + "value": [ + { + "string": "_._.layers.x", + "raw_string": "_._.layers.x" + } + ] + } + } + } + }, + { + "map_key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,7:14:89-7:15:90", + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,7:4:79-7:12:87", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,7:4:79-7:7:82", + "value": [ + { + "string": "hey", + "raw_string": "hey" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,7:8:83-7:12:87", + "value": [ + { + "string": "link", + "raw_string": "link" + } + ] + } + } + ] + }, + "primary": {}, + "value": { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,7:14:89-7:15:90", + "value": [ + { + "string": "_", + "raw_string": "_" + } + ] + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + } + } + } + } + ] + }, + "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": null, + "objects": [ + { + "id": "hello", + "id_val": "hello", + "label_dimensions": { + "width": 0, + "height": 0 + }, + "references": [ + { + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,6:4:50-6:14:60", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,6:4:50-6:9:55", + "value": [ + { + "string": "hello", + "raw_string": "hello" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,6:10:56-6:14:60", + "value": [ + { + "string": "link", + "raw_string": "link" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + } + ], + "attributes": { + "label": { + "value": "hello" + }, + "style": {}, + "link": { + "value": "_._.layers.x" + }, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": { + "value": "" + } + }, + "zIndex": 0 + }, + { + "id": "hey", + "id_val": "hey", + "label_dimensions": { + "width": 0, + "height": 0 + }, + "references": [ + { + "key": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,7:4:79-7:12:87", + "path": [ + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,7:4:79-7:7:82", + "value": [ + { + "string": "hey", + "raw_string": "hey" + } + ] + } + }, + { + "unquoted_string": { + "range": "d2/testdata/d2compiler/TestCompile/link-board-underscore.d2,7:8:83-7:12:87", + "value": [ + { + "string": "link", + "raw_string": "link" + } + ] + } + } + ] + }, + "key_path_index": 0, + "map_key_edge_index": -1 + } + ], + "attributes": { + "label": { + "value": "hey" + }, + "style": {}, + "link": { + "value": "_" + }, + "near_key": null, + "shape": { + "value": "rectangle" + }, + "direction": { + "value": "" + }, + "constraint": { + "value": "" + } + }, + "zIndex": 0 + } + ] + } + ] + } + ] + }, + "err": null +}