|
@@ -639,6 +639,30 @@ IHqlExpression * NewThorStoredReplacer::createTransformed(IHqlExpression * expr)
|
|
|
return expr->clone(actions);
|
|
|
return transform(expr->queryChild(0));
|
|
|
}
|
|
|
+ case no_if:
|
|
|
+ {
|
|
|
+ //Transform the whole expression since mapped expressions may be found on branches that are not taken
|
|
|
+ OwnedHqlExpr transformed = QuickHqlTransformer::createTransformed(expr);
|
|
|
+ if (transformed->getOperator() == no_if)
|
|
|
+ {
|
|
|
+ IHqlExpression * newCond = transformed->queryChild(0);
|
|
|
+ if (newCond->isConstant())
|
|
|
+ {
|
|
|
+ OwnedHqlExpr folded = quickFoldExpression(newCond);
|
|
|
+ IValue * foldedValue = folded->queryValue();
|
|
|
+ if (foldedValue)
|
|
|
+ {
|
|
|
+ if (foldedValue->getBoolValue())
|
|
|
+ return LINK(transformed->queryChild(1));
|
|
|
+ IHqlExpression * elseExpr = transformed->queryChild(2);
|
|
|
+ if (elseExpr)
|
|
|
+ return LINK(elseExpr);
|
|
|
+ return createNullExpr(expr);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
return QuickHqlTransformer::createTransformed(expr);
|
|
|
}
|