public override object VisitForeachStatement(ForeachStatement foreachStatement, object data) { base.VisitForeachStatement(foreachStatement, data); FixTypeReferenceCasing(foreachStatement.TypeReference, foreachStatement.StartLocation); if (resolver.CompilationUnit == null) { return(null); } if (foreachStatement.TypeReference.IsNull) { ResolveResult rr = resolver.ResolveIdentifier(foreachStatement.VariableName, foreachStatement.StartLocation, ExpressionContext.Default); if (rr != null && rr.ResolvedType != null) { BlockStatement blockStatement = foreachStatement.EmbeddedStatement as BlockStatement; if (blockStatement == null) { blockStatement = new BlockStatement(); blockStatement.AddChild(foreachStatement.EmbeddedStatement); foreachStatement.EmbeddedStatement = blockStatement; } string newVariableName = foreachStatement.VariableName + "_loopVariable"; ExpressionStatement st = new ExpressionStatement( new AssignmentExpression( new IdentifierExpression(foreachStatement.VariableName), AssignmentOperatorType.Assign, new IdentifierExpression(newVariableName))); blockStatement.Children.Insert(0, st); st.Parent = blockStatement; foreachStatement.VariableName = newVariableName; foreachStatement.TypeReference = ConvertType(rr.ResolvedType); } } return(null); }
public override object VisitIdentifierExpression(IdentifierExpression identifierExpression, object data) { return(resolver.ResolveIdentifier(identifierExpression, ExpressionContext.Default)); }