예제 #1
0
        Value VisitConditionalOperator(OperatorResolveResult result, BinaryOperatorType bitwiseOperatorType)
        {
            Debug.Assert(result.Operands.Count == 2);
            var            lhs      = Convert(result.Operands[0]).GetPermanentReference(evalThread);
            CSharpResolver resolver = new CSharpResolver(debuggerTypeSystem);
            Value          condVal;

            if (bitwiseOperatorType == BinaryOperatorType.BitwiseAnd)
            {
                condVal = Convert(resolver.ResolveConditionFalse(lhs.ToResolveResult(context)));
            }
            else
            {
                condVal = Convert(resolver.ResolveCondition(lhs.ToResolveResult(context)));
            }
            if ((bool)condVal.PrimitiveValue)
            {
                return(lhs);
            }
            var rhs = Convert(result.Operands[1]);
            var val = resolver.ResolveBinaryOperator(bitwiseOperatorType, lhs.ToResolveResult(context), rhs.ToResolveResult(context));

            return(Convert(val));
        }