fix edge suspension
This commit is contained in:
parent
0135cd1ce8
commit
3bbb33866e
1 changed files with 22 additions and 4 deletions
|
|
@ -1275,10 +1275,28 @@ func (c *compiler) _compileEdges(refctx *RefContext) {
|
||||||
|
|
||||||
if refctx.Key.Primary.Suspension != nil || refctx.Key.Value.Suspension != nil {
|
if refctx.Key.Primary.Suspension != nil || refctx.Key.Value.Suspension != nil {
|
||||||
if !c.lazyGlobBeingApplied {
|
if !c.lazyGlobBeingApplied {
|
||||||
|
var suspensionValue bool
|
||||||
if refctx.Key.Primary.Suspension != nil {
|
if refctx.Key.Primary.Suspension != nil {
|
||||||
e.suspended = refctx.Key.Primary.Suspension.Value
|
suspensionValue = refctx.Key.Primary.Suspension.Value
|
||||||
} else {
|
} else {
|
||||||
e.suspended = refctx.Key.Value.Suspension.Value
|
suspensionValue = refctx.Key.Value.Suspension.Value
|
||||||
|
}
|
||||||
|
e.suspended = suspensionValue
|
||||||
|
|
||||||
|
// If we're unsuspending an edge, we should also unsuspend its src and dst objects
|
||||||
|
if !suspensionValue {
|
||||||
|
// Find the source and destination objects
|
||||||
|
srcPath, dstPath := e.ID.SrcPath, e.ID.DstPath
|
||||||
|
srcObj := refctx.ScopeMap.GetField(srcPath...)
|
||||||
|
dstObj := refctx.ScopeMap.GetField(dstPath...)
|
||||||
|
|
||||||
|
// Unsuspend the objects
|
||||||
|
if srcObj != nil {
|
||||||
|
srcObj.suspended = false
|
||||||
|
}
|
||||||
|
if dstObj != nil {
|
||||||
|
dstObj.suspended = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1309,7 +1327,7 @@ func (c *compiler) _compileEdges(refctx *RefContext) {
|
||||||
}
|
}
|
||||||
c.compileField(e.Map_, refctx.Key.EdgeKey, refctx)
|
c.compileField(e.Map_, refctx.Key.EdgeKey, refctx)
|
||||||
} else {
|
} else {
|
||||||
if refctx.Key.Primary.Unbox() != nil {
|
if refctx.Key.Primary.Unbox() != nil && refctx.Key.Primary.Suspension == nil {
|
||||||
if c.ignoreLazyGlob(e) {
|
if c.ignoreLazyGlob(e) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -1330,7 +1348,7 @@ func (c *compiler) _compileEdges(refctx *RefContext) {
|
||||||
c.mapRefContextStack = append(c.mapRefContextStack, refctx)
|
c.mapRefContextStack = append(c.mapRefContextStack, refctx)
|
||||||
c.compileMap(e.Map_, refctx.Key.Value.Map, refctx.ScopeAST)
|
c.compileMap(e.Map_, refctx.Key.Value.Map, refctx.ScopeAST)
|
||||||
c.mapRefContextStack = c.mapRefContextStack[:len(c.mapRefContextStack)-1]
|
c.mapRefContextStack = c.mapRefContextStack[:len(c.mapRefContextStack)-1]
|
||||||
} else if refctx.Key.Value.ScalarBox().Unbox() != nil {
|
} else if refctx.Key.Value.ScalarBox().Unbox() != nil && refctx.Key.Value.Suspension == nil {
|
||||||
if c.ignoreLazyGlob(e) {
|
if c.ignoreLazyGlob(e) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue