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)); } }
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)); }