Example #1
0
        public void ForInStatementsAreCorrectlyOutput()
        {
            AssertCorrect(JsStatement.ForIn("x", JsExpression.Identifier("o"), JsStatement.EmptyBlock, true),
                          "for (var x in o) {\n}\n");

            AssertCorrect(JsStatement.ForIn("x", JsExpression.Identifier("o"), JsStatement.EmptyBlock, false),
                          "for (x in o) {\n}\n");
        }
            public override JsStatement VisitForEachInStatement(JsForEachInStatement statement, Tuple <Dictionary <string, string>, HashSet <string> > data)
            {
                string newName;

                if (data.Item1.TryGetValue(statement.LoopVariableName, out newName))
                {
                    return(JsStatement.ForIn(newName, VisitExpression(statement.ObjectToIterateOver, data), VisitStatement(statement.Body, data), statement.IsLoopVariableDeclared));
                }
                else
                {
                    return(base.VisitForEachInStatement(statement, data));
                }
            }
Example #3
0
        public override JsStatement VisitForEachInStatement(JsForEachInStatement statement, object data)
        {
            var objectToIterateOver = VisitExpression(statement.ObjectToIterateOver, data);
            var body = VisitStatement(statement.Body, data);

            if (statement.IsLoopVariableDeclared)
            {
                _variables.Add(statement.LoopVariableName);
                return(JsStatement.ForIn(statement.LoopVariableName, objectToIterateOver, body, false));
            }
            else
            {
                return(ReferenceEquals(objectToIterateOver, statement.ObjectToIterateOver) && ReferenceEquals(body, statement.Body) ? statement : JsStatement.ForIn(statement.LoopVariableName, objectToIterateOver, body, false));
            }
        }
        public override JsStatement VisitForEachInStatement(JsForEachInStatement statement, object data)
        {
            var body = VisitLoopBody(statement.Body, data);

            return(ReferenceEquals(body, statement.Body) ? statement : JsStatement.ForIn(statement.LoopVariableName, statement.ObjectToIterateOver, body, statement.IsLoopVariableDeclared));
        }
        public virtual JsStatement VisitForEachInStatement(JsForEachInStatement statement, TData data)
        {
            var objectToIterateOver = VisitExpression(statement.ObjectToIterateOver, data);
            var body = VisitStatement(statement.Body, data);

            return(ReferenceEquals(objectToIterateOver, statement.ObjectToIterateOver) && ReferenceEquals(body, statement.Body) ? statement : JsStatement.ForIn(statement.LoopVariableName, objectToIterateOver, body, statement.IsLoopVariableDeclared));
        }