|
@@ -191,13 +191,13 @@ func (a *salloc) Initialize(n node.Node, par scope.PARAM) (seq frame.Sequence, r
|
|
ret = frame.NOW
|
|
ret = frame.NOW
|
|
var sm scope.Manager
|
|
var sm scope.Manager
|
|
for next := par.Objects; next != nil; next = next.Link() {
|
|
for next := par.Objects; next != nil; next = next.Link() {
|
|
|
|
+ global := f.Domain().Discover(context.UNIVERSE).(context.Domain)
|
|
mod := rtm.ModuleOfNode(f.Domain(), val)
|
|
mod := rtm.ModuleOfNode(f.Domain(), val)
|
|
if mod != nil {
|
|
if mod != nil {
|
|
- global := f.Domain().Discover(context.UNIVERSE).(context.Domain)
|
|
|
|
//fmt.Println(mod.Name)
|
|
//fmt.Println(mod.Name)
|
|
global = global.Discover(mod.Name).(context.Domain)
|
|
global = global.Discover(mod.Name).(context.Domain)
|
|
sm = global.Discover(context.SCOPE).(scope.Manager)
|
|
sm = global.Discover(context.SCOPE).(scope.Manager)
|
|
- } else {
|
|
|
|
|
|
+ } else { //для фиктивных узлов, которые созданы рантаймом, типа INC/DEC
|
|
sm = a.area
|
|
sm = a.area
|
|
}
|
|
}
|
|
switch o := next.(type) {
|
|
switch o := next.(type) {
|
|
@@ -209,6 +209,19 @@ func (a *salloc) Initialize(n node.Node, par scope.PARAM) (seq frame.Sequence, r
|
|
case node.VariableNode:
|
|
case node.VariableNode:
|
|
v := sm.Select(nv.Object().Adr())
|
|
v := sm.Select(nv.Object().Adr())
|
|
l.v[l.k[o.Adr()]].Set(v)
|
|
l.v[l.k[o.Adr()]].Set(v)
|
|
|
|
+ case node.FieldNode:
|
|
|
|
+ nf := rt2.New(nv)
|
|
|
|
+ rt2.Push(nf, f)
|
|
|
|
+ rt2.Assert(f, func(f frame.Frame) (bool, int) {
|
|
|
|
+ return rt2.ValueOf(f)[nv.Adr()] != nil, 60
|
|
|
|
+ })
|
|
|
|
+ rt2.ReplaceDomain(nf, global)
|
|
|
|
+ seq = func(f frame.Frame) (frame.Sequence, frame.WAIT) {
|
|
|
|
+ v := rt2.ValueOf(f)[nv.Adr()]
|
|
|
|
+ l.v[l.k[o.Adr()]].Set(v)
|
|
|
|
+ return end, frame.NOW
|
|
|
|
+ }
|
|
|
|
+ ret = frame.LATER
|
|
default:
|
|
default:
|
|
halt.As(40, reflect.TypeOf(nv))
|
|
halt.As(40, reflect.TypeOf(nv))
|
|
}
|
|
}
|