This commit is contained in:
Alexander Wang 2023-03-01 10:28:01 -08:00
parent a02896c6da
commit 756068bef5
No known key found for this signature in database
GPG key ID: D89FA31966BDBECE
9 changed files with 1272 additions and 72 deletions

View file

@ -56,6 +56,10 @@ func compileIR(ast *d2ast.Map, m *d2ir.Map) (*d2graph.Graph, error) {
if len(c.err.Errors) > 0 { if len(c.err.Errors) > 0 {
return nil, c.err return nil, c.err
} }
c.compileBoardLink(g, m)
if len(c.err.Errors) > 0 {
return nil, c.err
}
return g, nil return g, nil
} }
@ -76,7 +80,6 @@ func (c *compiler) compileBoard(g *d2graph.Graph, ir *d2ir.Map) *d2graph.Graph {
g.IsFolderOnly = true g.IsFolderOnly = true
} }
} }
c.validateBoardLink(g, ir)
return g return g
} }
@ -323,6 +326,8 @@ func (c *compiler) compileReserved(attrs *d2graph.Attributes, f *d2ir.Field) {
attrs.Link = &d2graph.Scalar{} attrs.Link = &d2graph.Scalar{}
attrs.Link.Value = scalar.ScalarString() attrs.Link.Value = scalar.ScalarString()
attrs.Link.MapKey = f.LastPrimaryKey() attrs.Link.MapKey = f.LastPrimaryKey()
// TODO I think these all need the rank actually
attrs.Link.MapKey.Range = scalar.GetRange()
case "direction": case "direction":
dirs := []string{"up", "down", "right", "left"} dirs := []string{"up", "down", "right", "left"}
if !go2.Contains(dirs, scalar.ScalarString()) { if !go2.Contains(dirs, scalar.ScalarString()) {
@ -716,7 +721,7 @@ func (c *compiler) validateNear(g *d2graph.Graph) {
} }
} }
func (c *compiler) validateBoardLink(g *d2graph.Graph, ir *d2ir.Map) { func (c *compiler) compileBoardLink(g *d2graph.Graph, ir *d2ir.Map) {
for _, obj := range g.Objects { for _, obj := range g.Objects {
if obj.Attributes.Link == nil { if obj.Attributes.Link == nil {
continue continue
@ -728,25 +733,59 @@ func (c *compiler) validateBoardLink(g *d2graph.Graph, ir *d2ir.Map) {
continue continue
} }
// If the keyword is not another board, don't validate
// Might just be linking to a local folder
switch linkKey.Path[0].Unbox().ScalarString() { switch linkKey.Path[0].Unbox().ScalarString() {
// TODO underscore
case "layers", "scenarios", "steps": case "layers", "scenarios", "steps":
default: default:
continue continue
} }
b := ir.GetField(linkKey.IDA()...) obj.LinkedBoard = c.findBoard(g, ir, linkKey.IDA())
if b == nil {
if obj.LinkedBoard == nil {
c.errorf(obj.Attributes.Link.MapKey, "link key %#v to board not found", obj.Attributes.Link.Value) c.errorf(obj.Attributes.Link.MapKey, "link key %#v to board not found", obj.Attributes.Link.Value)
continue continue
} }
kind := d2ir.NodeBoardKind(b) }
if kind == "" { }
c.errorf(obj.Attributes.Link.MapKey, "internal link key %#v is not a top-level board", obj.Attributes.Link.Value)
func (c *compiler) findBoard(g *d2graph.Graph, ir *d2ir.Map, ida []string) *d2graph.Graph {
var currType string
for _, p := range ida {
switch p {
case "layers", "scenarios", "steps":
currType = p
continue continue
} }
var boards []*d2graph.Graph
switch currType {
case "layers":
boards = g.Layers
case "scenarios":
boards = g.Scenarios
case "steps":
boards = g.Steps
default:
return nil
} }
currType = ""
var board *d2graph.Graph
for i, b := range boards {
if b.Name == p {
board = boards[i]
break
}
}
if board == nil {
return nil
}
g = board
}
return g
} }
func init() { func init() {

View file

@ -2031,8 +2031,13 @@ Chinchillas_Collectibles.chinchilla -> Chinchillas.id`,
name: "link-board-ok", name: "link-board-ok",
text: `x.link: layers.x text: `x.link: layers.x
layers: { layers: {
x x: {
y
}
}`, }`,
assertions: func(t *testing.T, g *d2graph.Graph) {
tassert.Equal(t, g.Layers[0].Name, g.Objects[0].LinkedBoard.Name)
},
}, },
{ {
name: "link-board-mixed", name: "link-board-mixed",
@ -2050,6 +2055,9 @@ scenarios: {
question.style.fill: green question.style.fill: green
} }
}`, }`,
assertions: func(t *testing.T, g *d2graph.Graph) {
tassert.Equal(t, g.Layers[0].Name, g.Objects[0].LinkedBoard.Name)
},
}, },
{ {
name: "link-board-not-found", name: "link-board-not-found",
@ -2066,7 +2074,7 @@ layers: {
y y
} }
}`, }`,
expErr: `d2/testdata/d2compiler/TestCompile/link-board-not-board.d2:2:9: internal link key "layers.x.y" is not a top-level board`, expErr: `d2/testdata/d2compiler/TestCompile/link-board-not-board.d2:2:9: link key "layers.x.y" to board not found`,
}, },
{ {
name: "link-board-nested", name: "link-board-nested",
@ -2074,10 +2082,15 @@ layers: {
layers: { layers: {
x: { x: {
layers: { layers: {
x x: {
hello
}
} }
} }
}`, }`,
assertions: func(t *testing.T, g *d2graph.Graph) {
tassert.Equal(t, g.Layers[0].Layers[0], g.Objects[0].LinkedBoard)
},
}, },
} }

View file

@ -84,6 +84,8 @@ type Object struct {
LabelHeight *int `json:"labelHeight,omitempty"` LabelHeight *int `json:"labelHeight,omitempty"`
IconPosition *string `json:"iconPosition,omitempty"` IconPosition *string `json:"iconPosition,omitempty"`
LinkedBoard *Graph `json:"-"`
Class *d2target.Class `json:"class,omitempty"` Class *d2target.Class `json:"class,omitempty"`
SQLTable *d2target.SQLTable `json:"sql_table,omitempty"` SQLTable *d2target.SQLTable `json:"sql_table,omitempty"`

View file

@ -1,8 +1,9 @@
{ {
"graph": { "graph": {
"name": "", "name": "",
"isFolderOnly": false,
"ast": { "ast": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,0:0:0-11:1:137", "range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,0:0:0-13:1:173",
"nodes": [ "nodes": [
{ {
"map_key": { "map_key": {
@ -197,7 +198,7 @@
}, },
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,9:0:115-11:1:137", "range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,9:0:115-13:1:173",
"key": { "key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,9:0:115-9:9:124", "range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,9:0:115-9:9:124",
"path": [ "path": [
@ -217,11 +218,11 @@
"primary": {}, "primary": {},
"value": { "value": {
"map": { "map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,9:11:126-11:0:136", "range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,9:11:126-13:0:172",
"nodes": [ "nodes": [
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,10:2:130-10:7:135", "range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,10:2:130-12:3:171",
"key": { "key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,10:2:130-10:7:135", "range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,10:2:130-10:7:135",
"path": [ "path": [
@ -239,7 +240,68 @@
] ]
}, },
"primary": {}, "primary": {},
"value": {} "value": {
"map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,10:9:137-12:2:170",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:2:141-11:28:167",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:2:141-11:21:160",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:2:141-11:10:149",
"value": [
{
"string": "question",
"raw_string": "question"
}
]
}
},
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:11:150-11:16:155",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
},
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:17:156-11:21:160",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:23:162-11:28:167",
"value": [
{
"string": "green",
"raw_string": "green"
}
]
}
}
}
}
]
}
}
} }
} }
] ]
@ -261,9 +323,6 @@
"value": "" "value": ""
}, },
"style": {}, "style": {},
"link": {
"value": ""
},
"near_key": null, "near_key": null,
"shape": { "shape": {
"value": "" "value": ""
@ -364,8 +423,9 @@
"layers": [ "layers": [
{ {
"name": "cat", "name": "cat",
"isFolderOnly": false,
"ast": { "ast": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,0:0:0-11:1:137", "range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,0:0:0-13:1:173",
"nodes": [ "nodes": [
{ {
"map_key": { "map_key": {
@ -560,7 +620,7 @@
}, },
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,9:0:115-11:1:137", "range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,9:0:115-13:1:173",
"key": { "key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,9:0:115-9:9:124", "range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,9:0:115-9:9:124",
"path": [ "path": [
@ -580,11 +640,11 @@
"primary": {}, "primary": {},
"value": { "value": {
"map": { "map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,9:11:126-11:0:136", "range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,9:11:126-13:0:172",
"nodes": [ "nodes": [
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,10:2:130-10:7:135", "range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,10:2:130-12:3:171",
"key": { "key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,10:2:130-10:7:135", "range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,10:2:130-10:7:135",
"path": [ "path": [
@ -602,7 +662,68 @@
] ]
}, },
"primary": {}, "primary": {},
"value": {} "value": {
"map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,10:9:137-12:2:170",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:2:141-11:28:167",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:2:141-11:21:160",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:2:141-11:10:149",
"value": [
{
"string": "question",
"raw_string": "question"
}
]
}
},
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:11:150-11:16:155",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
},
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:17:156-11:21:160",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:23:162-11:28:167",
"value": [
{
"string": "green",
"raw_string": "green"
}
]
}
}
}
}
]
}
}
} }
} }
] ]
@ -624,9 +745,6 @@
"value": "" "value": ""
}, },
"style": {}, "style": {},
"link": {
"value": ""
},
"near_key": null, "near_key": null,
"shape": { "shape": {
"value": "" "value": ""
@ -662,9 +780,6 @@
"value": "goes" "value": "goes"
}, },
"style": {}, "style": {},
"link": {
"value": ""
},
"near_key": null, "near_key": null,
"shape": { "shape": {
"value": "" "value": ""
@ -714,9 +829,6 @@
"value": "the cat" "value": "the cat"
}, },
"style": {}, "style": {},
"link": {
"value": ""
},
"near_key": null, "near_key": null,
"shape": { "shape": {
"value": "rectangle" "value": "rectangle"
@ -764,9 +876,476 @@
"value": "meeeowwww" "value": "meeeowwww"
}, },
"style": {}, "style": {},
"link": { "near_key": null,
"shape": {
"value": "rectangle"
},
"direction": {
"value": "" "value": ""
}, },
"constraint": {
"value": ""
}
},
"zIndex": 0
}
]
}
],
"scenarios": [
{
"name": "green",
"isFolderOnly": false,
"ast": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,0:0:0-13:1:173",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,0:0:0-0:30:30",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,0:0:0-0:8:8",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,0:0:0-0:8:8",
"value": [
{
"string": "question",
"raw_string": "question"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,0:10:10-0:30:30",
"value": [
{
"string": "How does the cat go?",
"raw_string": "How does the cat go?"
}
]
}
}
}
},
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,1:15:46-1:25:56",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,1:0:31-1:13:44",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,1:0:31-1:8:39",
"value": [
{
"string": "question",
"raw_string": "question"
}
]
}
},
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,1:9:40-1:13:44",
"value": [
{
"string": "link",
"raw_string": "link"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,1:15:46-1:25:56",
"value": [
{
"string": "layers.cat",
"raw_string": "layers.cat"
}
]
}
}
}
},
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,3:0:58-7:1:113",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,3:0:58-3:6:64",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,3:0:58-3:6:64",
"value": [
{
"string": "layers",
"raw_string": "layers"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,3:8:66-7:0:112",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,4:2:70-6:3:111",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,4:2:70-4:5:73",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,4:2:70-4:5:73",
"value": [
{
"string": "cat",
"raw_string": "cat"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,4:7:75-6:2:110",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,5:4:81-5:30:107",
"edges": [
{
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,5:4:81-5:24:101",
"src": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,5:4:81-5:12:89",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,5:4:81-5:11:88",
"value": [
{
"string": "the cat",
"raw_string": "the cat"
}
]
}
}
]
},
"src_arrow": "",
"dst": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,5:14:91-5:24:101",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,5:15:92-5:24:101",
"value": [
{
"string": "meeeowwww",
"raw_string": "meeeowwww"
}
]
}
}
]
},
"dst_arrow": ">"
}
],
"primary": {},
"value": {
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,5:26:103-5:30:107",
"value": [
{
"string": "goes",
"raw_string": "goes"
}
]
}
}
}
}
]
}
}
}
}
]
}
}
}
},
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,9:0:115-13:1:173",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,9:0:115-9:9:124",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,9:0:115-9:9:124",
"value": [
{
"string": "scenarios",
"raw_string": "scenarios"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,9:11:126-13:0:172",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,10:2:130-12:3:171",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,10:2:130-10:7:135",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,10:2:130-10:7:135",
"value": [
{
"string": "green",
"raw_string": "green"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,10:9:137-12:2:170",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:2:141-11:28:167",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:2:141-11:21:160",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:2:141-11:10:149",
"value": [
{
"string": "question",
"raw_string": "question"
}
]
}
},
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:11:150-11:16:155",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
},
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:17:156-11:21:160",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:23:162-11:28:167",
"value": [
{
"string": "green",
"raw_string": "green"
}
]
}
}
}
}
]
}
}
}
}
]
}
}
}
}
]
},
"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": "question",
"id_val": "question",
"label_dimensions": {
"width": 0,
"height": 0
},
"references": [
{
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,0:0:0-0:8:8",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,0:0:0-0:8:8",
"value": [
{
"string": "question",
"raw_string": "question"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
},
{
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,1:0:31-1:13:44",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,1:0:31-1:8:39",
"value": [
{
"string": "question",
"raw_string": "question"
}
]
}
},
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,1:9:40-1:13:44",
"value": [
{
"string": "link",
"raw_string": "link"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
},
{
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:2:141-11:21:160",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:2:141-11:10:149",
"value": [
{
"string": "question",
"raw_string": "question"
}
]
}
},
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:11:150-11:16:155",
"value": [
{
"string": "style",
"raw_string": "style"
}
]
}
},
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-mixed.d2,11:17:156-11:21:160",
"value": [
{
"string": "fill",
"raw_string": "fill"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
}
],
"attributes": {
"label": {
"value": "How does the cat go?"
},
"style": {
"fill": {
"value": "green"
}
},
"link": {
"value": "layers.cat"
},
"near_key": null, "near_key": null,
"shape": { "shape": {
"value": "rectangle" "value": "rectangle"

View file

@ -3,11 +3,11 @@
"name": "", "name": "",
"isFolderOnly": false, "isFolderOnly": false,
"ast": { "ast": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,0:0:0-7:1:75", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,0:0:0-9:1:94",
"nodes": [ "nodes": [
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,0:0:0-0:25:25", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,0:8:8-0:25:25",
"key": { "key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,0:0:0-0:6:6", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,0:0:0-0:6:6",
"path": [ "path": [
@ -51,7 +51,7 @@
}, },
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,1:0:26-7:1:75", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,1:0:26-9:1:94",
"key": { "key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,1:0:26-1:6:32", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,1:0:26-1:6:32",
"path": [ "path": [
@ -71,11 +71,11 @@
"primary": {}, "primary": {},
"value": { "value": {
"map": { "map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,1:8:34-7:0:74", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,1:8:34-9:0:93",
"nodes": [ "nodes": [
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,2:1:37-6:3:73", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,2:1:37-8:3:92",
"key": { "key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,2:1:37-2:2:38", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,2:1:37-2:2:38",
"path": [ "path": [
@ -95,11 +95,11 @@
"primary": {}, "primary": {},
"value": { "value": {
"map": { "map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,2:4:40-6:2:72", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,2:4:40-8:2:91",
"nodes": [ "nodes": [
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,3:4:46-5:5:69", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,3:4:46-7:5:88",
"key": { "key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,3:4:46-3:10:52", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,3:4:46-3:10:52",
"path": [ "path": [
@ -119,17 +119,17 @@
"primary": {}, "primary": {},
"value": { "value": {
"map": { "map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,3:12:54-5:4:68", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,3:12:54-7:4:87",
"nodes": [ "nodes": [
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,4:6:62-4:7:63", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,4:3:59-6:4:82",
"key": { "key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,4:6:62-4:7:63", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,4:3:59-4:4:60",
"path": [ "path": [
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,4:6:62-4:7:63", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,4:3:59-4:4:60",
"value": [ "value": [
{ {
"string": "x", "string": "x",
@ -141,6 +141,30 @@
] ]
}, },
"primary": {}, "primary": {},
"value": {
"map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,4:6:62-6:3:81",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,5:8:72-5:13:77",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,5:8:72-5:13:77",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,5:8:72-5:13:77",
"value": [
{
"string": "hello",
"raw_string": "hello"
}
]
}
}
]
},
"primary": {},
"value": {} "value": {}
} }
} }
@ -160,6 +184,11 @@
} }
} }
] ]
}
}
}
}
]
}, },
"root": { "root": {
"id": "", "id": "",
@ -253,13 +282,13 @@
"layers": [ "layers": [
{ {
"name": "x", "name": "x",
"isFolderOnly": false, "isFolderOnly": true,
"ast": { "ast": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,0:0:0-7:1:75", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,0:0:0-9:1:94",
"nodes": [ "nodes": [
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,0:0:0-0:25:25", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,0:8:8-0:25:25",
"key": { "key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,0:0:0-0:6:6", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,0:0:0-0:6:6",
"path": [ "path": [
@ -303,7 +332,7 @@
}, },
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,1:0:26-7:1:75", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,1:0:26-9:1:94",
"key": { "key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,1:0:26-1:6:32", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,1:0:26-1:6:32",
"path": [ "path": [
@ -323,11 +352,11 @@
"primary": {}, "primary": {},
"value": { "value": {
"map": { "map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,1:8:34-7:0:74", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,1:8:34-9:0:93",
"nodes": [ "nodes": [
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,2:1:37-6:3:73", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,2:1:37-8:3:92",
"key": { "key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,2:1:37-2:2:38", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,2:1:37-2:2:38",
"path": [ "path": [
@ -347,11 +376,11 @@
"primary": {}, "primary": {},
"value": { "value": {
"map": { "map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,2:4:40-6:2:72", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,2:4:40-8:2:91",
"nodes": [ "nodes": [
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,3:4:46-5:5:69", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,3:4:46-7:5:88",
"key": { "key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,3:4:46-3:10:52", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,3:4:46-3:10:52",
"path": [ "path": [
@ -371,17 +400,17 @@
"primary": {}, "primary": {},
"value": { "value": {
"map": { "map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,3:12:54-5:4:68", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,3:12:54-7:4:87",
"nodes": [ "nodes": [
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,4:6:62-4:7:63", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,4:3:59-6:4:82",
"key": { "key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,4:6:62-4:7:63", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,4:3:59-4:4:60",
"path": [ "path": [
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,4:6:62-4:7:63", "range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,4:3:59-4:4:60",
"value": [ "value": [
{ {
"string": "x", "string": "x",
@ -393,6 +422,30 @@
] ]
}, },
"primary": {}, "primary": {},
"value": {
"map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,4:6:62-6:3:81",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,5:8:72-5:13:77",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,5:8:72-5:13:77",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,5:8:72-5:13:77",
"value": [
{
"string": "hello",
"raw_string": "hello"
}
]
}
}
]
},
"primary": {},
"value": {} "value": {}
} }
} }
@ -412,6 +465,11 @@
} }
} }
] ]
}
}
}
}
]
}, },
"root": { "root": {
"id": "", "id": "",
@ -439,7 +497,276 @@
"zIndex": 0 "zIndex": 0
}, },
"edges": null, "edges": null,
"objects": null "objects": null,
"layers": [
{
"name": "x",
"isFolderOnly": false,
"ast": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,0:0:0-9:1:94",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,0:8:8-0:25:25",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,0:0:0-0:6:6",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,0:0:0-0:1:1",
"value": [
{
"string": "x",
"raw_string": "x"
}
]
}
},
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,0:2:2-0:6:6",
"value": [
{
"string": "link",
"raw_string": "link"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,0:8:8-0:25:25",
"value": [
{
"string": "layers.x.layers.x",
"raw_string": "layers.x.layers.x"
}
]
}
}
}
},
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,1:0:26-9:1:94",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,1:0:26-1:6:32",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,1:0:26-1:6:32",
"value": [
{
"string": "layers",
"raw_string": "layers"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,1:8:34-9:0:93",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,2:1:37-8:3:92",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,2:1:37-2:2:38",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,2:1:37-2:2:38",
"value": [
{
"string": "x",
"raw_string": "x"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,2:4:40-8:2:91",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,3:4:46-7:5:88",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,3:4:46-3:10:52",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,3:4:46-3:10:52",
"value": [
{
"string": "layers",
"raw_string": "layers"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,3:12:54-7:4:87",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,4:3:59-6:4:82",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,4:3:59-4:4:60",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,4:3:59-4:4:60",
"value": [
{
"string": "x",
"raw_string": "x"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,4:6:62-6:3:81",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,5:8:72-5:13:77",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,5:8:72-5:13:77",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,5:8:72-5:13:77",
"value": [
{
"string": "hello",
"raw_string": "hello"
}
]
}
}
]
},
"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": null,
"objects": [
{
"id": "hello",
"id_val": "hello",
"label_dimensions": {
"width": 0,
"height": 0
},
"references": [
{
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,5:8:72-5:13:77",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-nested.d2,5:8:72-5:13:77",
"value": [
{
"string": "hello",
"raw_string": "hello"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
}
],
"attributes": {
"label": {
"value": "hello"
},
"style": {},
"near_key": null,
"shape": {
"value": "rectangle"
},
"direction": {
"value": ""
},
"constraint": {
"value": ""
}
},
"zIndex": 0
}
]
}
]
} }
] ]
}, },

View file

@ -5,7 +5,7 @@
"errs": [ "errs": [
{ {
"range": "d2/testdata/d2compiler/TestCompile/link-board-not-board.d2,1:8:12-1:18:22", "range": "d2/testdata/d2compiler/TestCompile/link-board-not-board.d2,1:8:12-1:18:22",
"errmsg": "d2/testdata/d2compiler/TestCompile/link-board-not-board.d2:2:9: internal link key \"layers.x.y\" is not a top-level board" "errmsg": "d2/testdata/d2compiler/TestCompile/link-board-not-board.d2:2:9: link key \"layers.x.y\" to board not found"
} }
] ]
} }

View file

@ -3,11 +3,11 @@
"name": "", "name": "",
"isFolderOnly": false, "isFolderOnly": false,
"ast": { "ast": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,0:0:0-3:1:32", "range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,0:0:0-5:1:42",
"nodes": [ "nodes": [
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,0:0:0-0:16:16", "range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,0:8:8-0:16:16",
"key": { "key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,0:0:0-0:6:6", "range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,0:0:0-0:6:6",
"path": [ "path": [
@ -51,7 +51,7 @@
}, },
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,1:0:17-3:1:32", "range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,1:0:17-5:1:42",
"key": { "key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,1:0:17-1:6:23", "range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,1:0:17-1:6:23",
"path": [ "path": [
@ -71,17 +71,17 @@
"primary": {}, "primary": {},
"value": { "value": {
"map": { "map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,1:8:25-3:0:31", "range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,1:8:25-5:0:41",
"nodes": [ "nodes": [
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,2:2:29-2:3:30", "range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,2:1:28-4:2:40",
"key": { "key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,2:2:29-2:3:30", "range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,2:1:28-2:2:29",
"path": [ "path": [
{ {
"unquoted_string": { "unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,2:2:29-2:3:30", "range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,2:1:28-2:2:29",
"value": [ "value": [
{ {
"string": "x", "string": "x",
@ -93,6 +93,30 @@
] ]
}, },
"primary": {}, "primary": {},
"value": {
"map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,2:4:31-4:1:39",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,3:3:36-3:4:37",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,3:3:36-3:4:37",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,3:3:36-3:4:37",
"value": [
{
"string": "y",
"raw_string": "y"
}
]
}
}
]
},
"primary": {},
"value": {} "value": {}
} }
} }
@ -102,6 +126,11 @@
} }
} }
] ]
}
}
}
}
]
}, },
"root": { "root": {
"id": "", "id": "",
@ -191,6 +220,217 @@
}, },
"zIndex": 0 "zIndex": 0
} }
],
"layers": [
{
"name": "x",
"isFolderOnly": false,
"ast": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,0:0:0-5:1:42",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,0:8:8-0:16:16",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,0:0:0-0:6:6",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,0:0:0-0:1:1",
"value": [
{
"string": "x",
"raw_string": "x"
}
]
}
},
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,0:2:2-0:6:6",
"value": [
{
"string": "link",
"raw_string": "link"
}
]
}
}
]
},
"primary": {},
"value": {
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,0:8:8-0:16:16",
"value": [
{
"string": "layers.x",
"raw_string": "layers.x"
}
]
}
}
}
},
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,1:0:17-5:1:42",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,1:0:17-1:6:23",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,1:0:17-1:6:23",
"value": [
{
"string": "layers",
"raw_string": "layers"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,1:8:25-5:0:41",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,2:1:28-4:2:40",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,2:1:28-2:2:29",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,2:1:28-2:2:29",
"value": [
{
"string": "x",
"raw_string": "x"
}
]
}
}
]
},
"primary": {},
"value": {
"map": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,2:4:31-4:1:39",
"nodes": [
{
"map_key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,3:3:36-3:4:37",
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,3:3:36-3:4:37",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,3:3:36-3:4:37",
"value": [
{
"string": "y",
"raw_string": "y"
}
]
}
}
]
},
"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": null,
"objects": [
{
"id": "y",
"id_val": "y",
"label_dimensions": {
"width": 0,
"height": 0
},
"references": [
{
"key": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,3:3:36-3:4:37",
"path": [
{
"unquoted_string": {
"range": "d2/testdata/d2compiler/TestCompile/link-board-ok.d2,3:3:36-3:4:37",
"value": [
{
"string": "y",
"raw_string": "y"
}
]
}
}
]
},
"key_path_index": 0,
"map_key_edge_index": -1
}
],
"attributes": {
"label": {
"value": "y"
},
"style": {},
"near_key": null,
"shape": {
"value": "rectangle"
},
"direction": {
"value": ""
},
"constraint": {
"value": ""
}
},
"zIndex": 0
}
]
}
] ]
}, },
"err": null "err": null

View file

@ -31,7 +31,7 @@
"nodes": [ "nodes": [
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2compiler/TestCompile/path_link.d2,1:2:7-1:39:44", "range": "d2/testdata/d2compiler/TestCompile/path_link.d2,1:8:13-1:39:44",
"key": { "key": {
"range": "d2/testdata/d2compiler/TestCompile/path_link.d2,1:2:7-1:6:11", "range": "d2/testdata/d2compiler/TestCompile/path_link.d2,1:2:7-1:6:11",
"path": [ "path": [

View file

@ -31,7 +31,7 @@
"nodes": [ "nodes": [
{ {
"map_key": { "map_key": {
"range": "d2/testdata/d2compiler/TestCompile/url_link.d2,1:2:7-1:26:31", "range": "d2/testdata/d2compiler/TestCompile/url_link.d2,1:8:13-1:26:31",
"key": { "key": {
"range": "d2/testdata/d2compiler/TestCompile/url_link.d2,1:2:7-1:6:11", "range": "d2/testdata/d2compiler/TestCompile/url_link.d2,1:2:7-1:6:11",
"path": [ "path": [