示例#1
0
    protected LoopStatement(ToBoolean condition, Statement body)
    {
      Body = body;
      Condition = condition;
      SourceOffset = body.SourceOffset;

      Use(Condition);
      Use(Body);
    }
示例#2
0
        protected LoopStatement(ToBoolean condition, Statement body)
        {
            Body         = body;
            Condition    = condition;
            SourceOffset = body.SourceOffset;

            Use(Condition);
            Use(Body);
        }
示例#3
0
        public ToBoolean MakeToBoolean(Expression expression)
        {
            var n = expression as ToBoolean;

            if (n == null)
            {
                n = new ToBoolean(MakeGuardedCast(expression));
            }
            return(n);
        }
示例#4
0
        public ForStatement MakeForStatement(Scope scope, IStatement initialization, IExpression condition, IExpression increment, IStatement body)
        {
            scope.HasLoop = true;
            ToBoolean booleanCondition = null;

            if (condition != null)
            {
                booleanCondition = MakeToBoolean((Expression)condition);
            }
            var n = new ForStatement((Statement)initialization, booleanCondition, (Expression)increment, (Statement)body);

            return(n);
        }
示例#5
0
    public ForEachInStatement(
      Statement initialization, 
      ToObject expression, 
      Statement body, 
      Statement iteratorInitialization,
      ToBoolean iteratorCondition,
      BlockStatement extendedBody
    )
      : base(iteratorCondition, extendedBody)
    {
      Initialization = initialization;
      Expression = expression;
      OriginalBody = body;

      IteratorInitialization = iteratorInitialization;
      ExtendedBody = extendedBody;

      //Use(Expression); //We don't need this since IteratorInitialization must be already using it!
      Debug.Assert(Expression.HasUser, "{0} must already have a user", Expression);
    }
示例#6
0
        public ForEachInStatement(
            Statement initialization,
            ToObject expression,
            Statement body,
            Statement iteratorInitialization,
            ToBoolean iteratorCondition,
            BlockStatement extendedBody
            )
            : base(iteratorCondition, extendedBody)
        {
            Initialization = initialization;
            Expression     = expression;
            OriginalBody   = body;

            IteratorInitialization = iteratorInitialization;
            ExtendedBody           = extendedBody;

            //Use(Expression); //We don't need this since IteratorInitialization must be already using it!
            Debug.Assert(Expression.HasUser, "{0} must already have a user", Expression);
        }
示例#7
0
 public override void Visit(ToBoolean node) { Visit(node, Types.Operations.Convert.ToBoolean); }
示例#8
0
 public override void Visit(ToBoolean node) { Visit((ConversionExpression)node); }
示例#9
0
 public override void Visit(ToBoolean node) { base.Visit(node); node.ValueType = GetType(node); }
示例#10
0
 internal static mdr.ValueTypes GetType(ToBoolean expression) { return Types.Operations.Convert.ToBoolean.ReturnType(expression.ValueType); }
示例#11
0
 public override void Visit(ToBoolean node)
 {
     Visit((ConversionExpression)node);
 }
示例#12
0
 public ToBoolean MakeToBoolean(Expression expression)
 {
   var n = expression as ToBoolean;
   if (n == null)
   {
     n = new ToBoolean(MakeGuardedCast(expression));
   }
   return n;
 }
示例#13
0
 public abstract void Visit(ToBoolean node);
示例#14
0
 public override void Visit(ToBoolean node)
 {
   PushLocation(node);
   VisitNode(node.Expression);
   Call(Types.Operations.Stack.ToBoolean, 1, 1);
   PopLocation();
 }
示例#15
0
 public override void Visit(ToBoolean node) { AssignToImplicitReturn(node); }