|
@@ -54,7 +54,7 @@ class LoopNode extends Node {
|
|
|
*/
|
|
*/
|
|
|
constructor( params = [] ) {
|
|
constructor( params = [] ) {
|
|
|
|
|
|
|
|
- super();
|
|
|
|
|
|
|
+ super( 'void' );
|
|
|
|
|
|
|
|
this.params = params;
|
|
this.params = params;
|
|
|
|
|
|
|
@@ -100,16 +100,20 @@ class LoopNode extends Node {
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- const stack = builder.addStack(); // TODO: cache() it
|
|
|
|
|
|
|
+ const stack = builder.addStack();
|
|
|
|
|
|
|
|
- properties.returnsNode = this.params[ this.params.length - 1 ]( inputs, builder );
|
|
|
|
|
|
|
+ const fnCall = this.params[ this.params.length - 1 ]( inputs );
|
|
|
|
|
+
|
|
|
|
|
+ properties.returnsNode = fnCall.context( { nodeLoop: fnCall } );
|
|
|
properties.stackNode = stack;
|
|
properties.stackNode = stack;
|
|
|
|
|
|
|
|
const baseParam = this.params[ 0 ];
|
|
const baseParam = this.params[ 0 ];
|
|
|
|
|
|
|
|
if ( baseParam.isNode !== true && typeof baseParam.update === 'function' ) {
|
|
if ( baseParam.isNode !== true && typeof baseParam.update === 'function' ) {
|
|
|
|
|
|
|
|
- properties.updateNode = Fn( this.params[ 0 ].update )( inputs );
|
|
|
|
|
|
|
+ const fnUpdateCall = Fn( this.params[ 0 ].update )( inputs );
|
|
|
|
|
+
|
|
|
|
|
+ properties.updateNode = fnUpdateCall.context( { nodeLoop: fnUpdateCall } );
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -119,20 +123,6 @@ class LoopNode extends Node {
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- /**
|
|
|
|
|
- * This method is overwritten since the node type is inferred based on the loop configuration.
|
|
|
|
|
- *
|
|
|
|
|
- * @param {NodeBuilder} builder - The current node builder.
|
|
|
|
|
- * @return {string} The node type.
|
|
|
|
|
- */
|
|
|
|
|
- getNodeType( builder ) {
|
|
|
|
|
-
|
|
|
|
|
- const { returnsNode } = this.getProperties( builder );
|
|
|
|
|
-
|
|
|
|
|
- return returnsNode ? returnsNode.getNodeType( builder ) : 'void';
|
|
|
|
|
-
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
setup( builder ) {
|
|
setup( builder ) {
|
|
|
|
|
|
|
|
// setup properties
|
|
// setup properties
|
|
@@ -312,7 +302,7 @@ class LoopNode extends Node {
|
|
|
|
|
|
|
|
const stackSnippet = stackNode.build( builder, 'void' );
|
|
const stackSnippet = stackNode.build( builder, 'void' );
|
|
|
|
|
|
|
|
- const returnsSnippet = properties.returnsNode ? properties.returnsNode.build( builder ) : '';
|
|
|
|
|
|
|
+ properties.returnsNode.build( builder, 'void' );
|
|
|
|
|
|
|
|
builder.removeFlowTab().addFlowCode( '\n' + builder.tab + stackSnippet );
|
|
builder.removeFlowTab().addFlowCode( '\n' + builder.tab + stackSnippet );
|
|
|
|
|
|
|
@@ -324,8 +314,6 @@ class LoopNode extends Node {
|
|
|
|
|
|
|
|
builder.addFlowTab();
|
|
builder.addFlowTab();
|
|
|
|
|
|
|
|
- return returnsSnippet;
|
|
|
|
|
-
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|