public EXPRUSERLOGOP CreateUserLogOp(CType pType, EXPR pCallTF, EXPRCALL pCallOp)
{
Debug.Assert(pCallTF != null);
Debug.Assert(pCallOp != null);
Debug.Assert(pCallOp.GetOptionalArguments() != null);
Debug.Assert(pCallOp.GetOptionalArguments().isLIST());
Debug.Assert(pCallOp.GetOptionalArguments().asLIST().GetOptionalElement() != null);
EXPRUSERLOGOP rval = new EXPRUSERLOGOP();
EXPR leftChild = pCallOp.GetOptionalArguments().asLIST().GetOptionalElement();
Debug.Assert(leftChild != null);
if (leftChild.isWRAP())
{
// In the EE case, we don't create WRAPEXPRs.
leftChild = leftChild.asWRAP().GetOptionalExpression();
Debug.Assert(leftChild != null);
}
rval.kind = ExpressionKind.EK_USERLOGOP;
rval.type = pType;
rval.flags = EXPRFLAG.EXF_ASSGOP;
rval.TrueFalseCall = pCallTF;
rval.OperatorCall = pCallOp;
rval.FirstOperandToExamine = leftChild;
Debug.Assert(rval != null);
return (rval);
}