diff --git a/src/nodes/core/CacheNode.js b/src/nodes/core/CacheNode.js index 2a3da0d5ccaff5..d7a5be87bd7773 100644 --- a/src/nodes/core/CacheNode.js +++ b/src/nodes/core/CacheNode.js @@ -56,7 +56,16 @@ class CacheNode extends Node { getNodeType( builder ) { - return this.node.getNodeType( builder ); + const previousCache = builder.getCache(); + const cache = builder.getCacheFromNode( this, this.parent ); + + builder.setCache( cache ); + + const nodeType = this.node.getNodeType( builder ); + + builder.setCache( previousCache ); + + return nodeType; } diff --git a/src/nodes/math/ConditionalNode.js b/src/nodes/math/ConditionalNode.js index e133237fba2a48..69fb0988c0538d 100644 --- a/src/nodes/math/ConditionalNode.js +++ b/src/nodes/math/ConditionalNode.js @@ -69,11 +69,23 @@ class ConditionalNode extends Node { */ getNodeType( builder ) { - const ifType = this.ifNode.getNodeType( builder ); + const { ifNode, elseNode } = builder.getNodeProperties( this ); - if ( this.elseNode !== null ) { + if ( ifNode === undefined ) { - const elseType = this.elseNode.getNodeType( builder ); + // fallback setup + + this.setup( builder ); + + return this.getNodeType( builder ); + + } + + const ifType = ifNode.getNodeType( builder ); + + if ( elseNode !== null ) { + + const elseType = elseNode.getNodeType( builder ); if ( builder.getTypeLength( elseType ) > builder.getTypeLength( ifType ) ) {