Fix not rewriting else-if blocks.
We would miss expanding the else-if clauses in a chain
of selection statements.
BUG=346463
BUG=391697
Change-Id: Iee644b875cf68d0ed3dc0b73542efc49ecb23242
Reviewed-on: https://chromium-review.googlesource.com/206822
Reviewed-by: Nicolas Capens <capn@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Shannon Woods <shannonwoods@chromium.org>
diff --git a/src/compiler/translator/RewriteElseBlocks.cpp b/src/compiler/translator/RewriteElseBlocks.cpp
index 48e87cd..8a9e29e 100644
--- a/src/compiler/translator/RewriteElseBlocks.cpp
+++ b/src/compiler/translator/RewriteElseBlocks.cpp
@@ -48,6 +48,14 @@
TIntermSelection *selection = statement->getAsSelectionNode();
if (selection && selection->getFalseBlock() != NULL)
{
+ // Check for if / else if
+ TIntermSelection *elseIfBranch = selection->getFalseBlock()->getAsSelectionNode();
+ if (elseIfBranch)
+ {
+ selection->replaceChildNode(elseIfBranch, rewriteSelection(elseIfBranch));
+ delete elseIfBranch;
+ }
+
node->getSequence()[statementIndex] = rewriteSelection(selection);
delete selection;
}