@@ -72,35 +72,29 @@ function mt:_compileNarrowByFilter(filter, outStep, blockStep)
7272 self :_compileNarrowByFilter (filter [2 ], outStep , blockStep )
7373 end
7474 if filter .op .type == ' or' then
75- local orRightStep = {
75+ local dummyStep = {
7676 type = ' load' ,
77- tag = ' orRight ' ,
77+ tag = ' dummy ' ,
7878 copy = true ,
7979 ref1 = outStep ,
8080 pos = filter .start - 1 ,
8181 }
82- local orLeftStep = {
82+ self .steps [# self .steps + 1 ] = dummyStep
83+ self :_compileNarrowByFilter (filter [1 ], outStep , dummyStep )
84+ dummyStep = {
8385 type = ' load' ,
84- tag = ' orLeft ' ,
86+ tag = ' dummy ' ,
8587 copy = true ,
8688 ref1 = outStep ,
87- pos = filter .start - 1 ,
88- }
89- self .steps [# self .steps + 1 ] = orRightStep
90- self .steps [# self .steps + 1 ] = orLeftStep
91- self :_compileNarrowByFilter (filter [1 ], orRightStep , orLeftStep )
92- self .steps [# self .steps + 1 ] = {
93- type = ' load' ,
94- tag = ' orReset' ,
95- ref1 = orRightStep ,
96- pos = filter .op .start
89+ pos = filter .op .finish ,
9790 }
98- self :_compileNarrowByFilter (filter [2 ], orLeftStep , orRightStep )
91+ self .steps [# self .steps + 1 ] = dummyStep
92+ self :_compileNarrowByFilter (filter [2 ], outStep , dummyStep )
9993 self .steps [# self .steps + 1 ] = {
10094 type = ' load' ,
10195 tag = ' reset' ,
10296 ref1 = blockStep ,
103- pos = filter .finish
97+ pos = filter .finish ,
10498 }
10599 end
106100 if filter .op .type == ' =='
@@ -339,11 +333,7 @@ function mt:launch(callback)
339333 elseif step .type == ' save' then
340334 step .node = node
341335 elseif step .type == ' load' then
342- if step .ref1 then
343- step .node = step .ref1 .node
344- else
345- step .node = node
346- end
336+ step .node = node
347337 context = step
348338 elseif step .type == ' merge' then
349339 node :merge (step .ref2 .node )
0 commit comments