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

TSL: Fix auto-cache if using multiple conditionals (#31076)

* fix flow

* prevent re-update outputNode

* Update ContextNode.js
sunag 11 месяцев назад
Родитель
Сommit
6bcfbf5a7e
2 измененных файлов с 9 добавлено и 15 удалено
  1. 7 3
      src/nodes/core/ContextNode.js
  2. 2 12
      src/nodes/core/Node.js

+ 7 - 3
src/nodes/core/ContextNode.js

@@ -80,8 +80,14 @@ class ContextNode extends Node {
 
 	analyze( builder ) {
 
+		const previousContext = builder.getContext();
+
+		builder.setContext( { ...builder.context, ...this.value } );
+
 		this.node.build( builder );
 
+		builder.setContext( previousContext );
+
 	}
 
 	setup( builder ) {
@@ -90,12 +96,10 @@ class ContextNode extends Node {
 
 		builder.setContext( { ...builder.context, ...this.value } );
 
-		const node = this.node.build( builder );
+		this.node.build( builder );
 
 		builder.setContext( previousContext );
 
-		return node;
-
 	}
 
 	generate( builder, output ) {

+ 2 - 12
src/nodes/core/Node.js

@@ -636,9 +636,7 @@ class Node extends EventDispatcher {
 				//const stackNodesBeforeSetup = builder.stack.nodes.length;
 
 				properties.initialized = true;
-
-				const outputNode = this.setup( builder ); // return a node or null
-				const isNodeOutput = outputNode && outputNode.isNode === true;
+				properties.outputNode = this.setup( builder ) || properties.outputNode || null;
 
 				/*if ( isNodeOutput && builder.stack.nodes.length !== stackNodesBeforeSetup ) {
 
@@ -665,17 +663,9 @@ class Node extends EventDispatcher {
 
 				}
 
-				if ( isNodeOutput ) {
-
-					outputNode.build( builder );
-
-				}
-
-				properties.outputNode = outputNode;
-
 			}
 
-			result = properties.outputNode || null;
+			result = properties.outputNode;
 
 		} else if ( buildStage === 'analyze' ) {
 

粤ICP备19079148号