Просмотр исходного кода

StackNode: Fix `outputNode` flow propagation (#33405)

sunag 1 месяц назад
Родитель
Сommit
c5ef44edd6
1 измененных файлов с 11 добавлено и 11 удалено
  1. 11 11
      src/nodes/core/StackNode.js

+ 11 - 11
src/nodes/core/StackNode.js

@@ -91,19 +91,19 @@ class StackNode extends Node {
 
 	getElementType( builder ) {
 
-		return this.hasOutput( builder ) ? this.outputNode.getElementType( builder ) : 'void';
+		return this.outputNode ? this.outputNode.getElementType( builder ) : 'void';
 
 	}
 
 	generateNodeType( builder ) {
 
-		return this.hasOutput( builder ) ? this.outputNode.getNodeType( builder ) : 'void';
+		return this.outputNode ? this.outputNode.getNodeType( builder ) : 'void';
 
 	}
 
 	getMemberType( builder, name ) {
 
-		return this.hasOutput( builder ) ? this.outputNode.getMemberType( builder, name ) : 'void';
+		return this.outputNode ? this.outputNode.getMemberType( builder, name ) : 'void';
 
 	}
 
@@ -312,12 +312,6 @@ class StackNode extends Node {
 
 	}
 
-	hasOutput( builder ) {
-
-		return this.outputNode && this.outputNode.isNode && this.outputNode.getNodeType( builder ) !== 'void';
-
-	}
-
 	build( builder, ...params ) {
 
 		const previousStack = getCurrentStack();
@@ -393,9 +387,15 @@ class StackNode extends Node {
 
 		let result;
 
-		if ( this.hasOutput( builder ) ) {
+		if ( this.outputNode ) {
 
-			result = this.outputNode.build( builder, ...params );
+			const buildResult = this.outputNode.build( builder, ...params );
+
+			if ( builder.buildStage !== 'generate' || this.outputNode.getNodeType( builder ) !== 'void' ) {
+
+				result = buildResult;
+
+			}
 
 		} else {
 

粤ICP备19079148号