d2ir/imports: fix removing parent scope of nested import fields/edges
This commit is contained in:
parent
47406451c2
commit
4e93f70db3
3 changed files with 74 additions and 54 deletions
|
|
@ -2979,8 +2979,8 @@ qa: {
|
||||||
assertions: func(t *testing.T, g *d2graph.Graph) {
|
assertions: func(t *testing.T, g *d2graph.Graph) {
|
||||||
tassert.Equal(t, "dev.env", g.Objects[1].AbsID())
|
tassert.Equal(t, "dev.env", g.Objects[1].AbsID())
|
||||||
tassert.Equal(t, "Dev Environment", g.Objects[1].Label.Value)
|
tassert.Equal(t, "Dev Environment", g.Objects[1].Label.Value)
|
||||||
tassert.Equal(t, "qa.env", g.Objects[2].AbsID())
|
tassert.Equal(t, "qa.env", g.Objects[4].AbsID())
|
||||||
tassert.Equal(t, "Qa Environment", g.Objects[2].Label.Value)
|
tassert.Equal(t, "Qa Environment", g.Objects[4].Label.Value)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -61,15 +61,18 @@ func (c *compiler) _import(imp *d2ast.Import) (Node, bool) {
|
||||||
if !ok {
|
if !ok {
|
||||||
return nil, false
|
return nil, false
|
||||||
}
|
}
|
||||||
nilScopeMap(ir)
|
|
||||||
if len(imp.IDA()) > 0 {
|
if len(imp.IDA()) > 0 {
|
||||||
f := ir.GetField(imp.IDA()...)
|
f := ir.GetField(imp.IDA()...)
|
||||||
if f == nil {
|
if f == nil {
|
||||||
c.errorf(imp, "import key %q doesn't exist inside import", imp.IDA())
|
c.errorf(imp, "import key %q doesn't exist inside import", imp.IDA())
|
||||||
return nil, false
|
return nil, false
|
||||||
}
|
}
|
||||||
|
if f.Map() != nil {
|
||||||
|
nilScopeMap(f.Map())
|
||||||
|
}
|
||||||
return f, true
|
return f, true
|
||||||
}
|
}
|
||||||
|
nilScopeMap(ir)
|
||||||
return ir, true
|
return ir, true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -132,15 +135,9 @@ func nilScopeMap(n Node) {
|
||||||
for _, r := range n.References {
|
for _, r := range n.References {
|
||||||
r.Context_.ScopeMap = nil
|
r.Context_.ScopeMap = nil
|
||||||
}
|
}
|
||||||
if n.Map() != nil {
|
|
||||||
nilScopeMap(n.Map())
|
|
||||||
}
|
|
||||||
case *Field:
|
case *Field:
|
||||||
for _, r := range n.References {
|
for _, r := range n.References {
|
||||||
r.Context_.ScopeMap = nil
|
r.Context_.ScopeMap = nil
|
||||||
}
|
}
|
||||||
if n.Map() != nil {
|
|
||||||
nilScopeMap(n.Map())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
113
testdata/d2compiler/TestCompile/vars-in-imports.exp.json
generated
vendored
113
testdata/d2compiler/TestCompile/vars-in-imports.exp.json
generated
vendored
|
|
@ -344,51 +344,6 @@
|
||||||
},
|
},
|
||||||
"zIndex": 0
|
"zIndex": 0
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"id": "env",
|
|
||||||
"id_val": "env",
|
|
||||||
"references": [
|
|
||||||
{
|
|
||||||
"key": {
|
|
||||||
"range": "d2/testdata/d2compiler/TestCompile/template.d2,0:0:0-0:3:3",
|
|
||||||
"path": [
|
|
||||||
{
|
|
||||||
"unquoted_string": {
|
|
||||||
"range": "d2/testdata/d2compiler/TestCompile/template.d2,0:0:0-0:3:3",
|
|
||||||
"value": [
|
|
||||||
{
|
|
||||||
"string": "env",
|
|
||||||
"raw_string": "env"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"key_path_index": 0,
|
|
||||||
"map_key_edge_index": -1
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"attributes": {
|
|
||||||
"label": {
|
|
||||||
"value": "Qa Environment"
|
|
||||||
},
|
|
||||||
"labelDimensions": {
|
|
||||||
"width": 0,
|
|
||||||
"height": 0
|
|
||||||
},
|
|
||||||
"style": {},
|
|
||||||
"near_key": null,
|
|
||||||
"shape": {
|
|
||||||
"value": "rectangle"
|
|
||||||
},
|
|
||||||
"direction": {
|
|
||||||
"value": ""
|
|
||||||
},
|
|
||||||
"constraint": null
|
|
||||||
},
|
|
||||||
"zIndex": 0
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"id": "vm",
|
"id": "vm",
|
||||||
"id_val": "vm",
|
"id_val": "vm",
|
||||||
|
|
@ -434,6 +389,74 @@
|
||||||
},
|
},
|
||||||
"zIndex": 0
|
"zIndex": 0
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "env",
|
||||||
|
"id_val": "env",
|
||||||
|
"attributes": {
|
||||||
|
"label": {
|
||||||
|
"value": "env"
|
||||||
|
},
|
||||||
|
"labelDimensions": {
|
||||||
|
"width": 0,
|
||||||
|
"height": 0
|
||||||
|
},
|
||||||
|
"style": {},
|
||||||
|
"near_key": null,
|
||||||
|
"shape": {
|
||||||
|
"value": "rectangle"
|
||||||
|
},
|
||||||
|
"direction": {
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"constraint": null
|
||||||
|
},
|
||||||
|
"zIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "env",
|
||||||
|
"id_val": "env",
|
||||||
|
"references": [
|
||||||
|
{
|
||||||
|
"key": {
|
||||||
|
"range": "d2/testdata/d2compiler/TestCompile/template.d2,0:0:0-0:3:3",
|
||||||
|
"path": [
|
||||||
|
{
|
||||||
|
"unquoted_string": {
|
||||||
|
"range": "d2/testdata/d2compiler/TestCompile/template.d2,0:0:0-0:3:3",
|
||||||
|
"value": [
|
||||||
|
{
|
||||||
|
"string": "env",
|
||||||
|
"raw_string": "env"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"key_path_index": 0,
|
||||||
|
"map_key_edge_index": -1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"attributes": {
|
||||||
|
"label": {
|
||||||
|
"value": "Qa Environment"
|
||||||
|
},
|
||||||
|
"labelDimensions": {
|
||||||
|
"width": 0,
|
||||||
|
"height": 0
|
||||||
|
},
|
||||||
|
"style": {},
|
||||||
|
"near_key": null,
|
||||||
|
"shape": {
|
||||||
|
"value": "rectangle"
|
||||||
|
},
|
||||||
|
"direction": {
|
||||||
|
"value": ""
|
||||||
|
},
|
||||||
|
"constraint": null
|
||||||
|
},
|
||||||
|
"zIndex": 0
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "vm",
|
"id": "vm",
|
||||||
"id_val": "vm",
|
"id_val": "vm",
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue