Пример #1
0
        public override bool IsConstant(object value)
        {
            if (value == null)
            {
                return(false);
            }

            switch (NodeType)
            {
            case AstNodeType.AndAlso:
                if (value.Equals(true))
                {
                    return(_left.IsConstant(true) && _right.IsConstant(true));
                }
                if (value.Equals(false))
                {
                    // if left isn't a constant it has to be evaluated
                    return(_left.IsConstant(false));
                }
                break;

            case AstNodeType.OrElse:
                if (value.Equals(true))
                {
                    return(_left.IsConstant(true));
                }
                if (value.Equals(false))
                {
                    return(_left.IsConstant(false) && _right.IsConstant(false));
                }
                break;
            }
            return(false);
        }
Пример #2
0
 internal WriteStatement(Variable var, Expression value) : base(AstNodeType.WriteStatement, SourceSpan.None)
 {
     _value    = value;
     _variable = var;
     if (!value.IsConstant(null))
     {
         _variable.AssumedValue = _variable.AssumedValue == null?GetReference(value) : null;
     }
 }
Пример #3
0
 internal WriteStatement(Variable var, Expression value) : base(AstNodeType.WriteStatement, SourceSpan.None)
 {
   _value = value;
   _variable = var;
   if (!value.IsConstant(null))
   {
     _variable.AssumedValue = _variable.AssumedValue == null ? GetReference(value) : null;
   }
 }
Пример #4
0
        internal BoundAssignment(Variable /*!*/ variable, Expression /*!*/ value)
            : base(AstNodeType.BoundAssignment)
        {
            _variable = variable;
            _value    = value;
            if (value.IsConstant(null))
            {
#warning See if this is problematic, gets invoked by pfds tests
                //Debugger.Break();
            }
            _variable.AssumedValue = _variable.AssumedValue == null?GetReference(value) : null;
        }
Пример #5
0
 internal BoundAssignment(Variable /*!*/ variable, Expression /*!*/ value)
     : base(AstNodeType.BoundAssignment)
 {
     _variable = variable;
     _value = value;
     if (value.IsConstant(null))
     {
     #warning See if this is problematic, gets invoked by pfds tests
       //Debugger.Break();
     }
     _variable.AssumedValue = _variable.AssumedValue == null ? GetReference(value) : null;
 }