提交 9201fa95 编写于 作者: M Manish Vasani

Address PR feedback

上级 7520e0ed
...@@ -6502,25 +6502,27 @@ IOperation visitInvalidOperationExpression(IInvalidOperation invalidOperation) ...@@ -6502,25 +6502,27 @@ IOperation visitInvalidOperationExpression(IInvalidOperation invalidOperation)
public override IOperation VisitReDim(IReDimOperation operation, int? argument) public override IOperation VisitReDim(IReDimOperation operation, int? argument)
{ {
StartVisitingStatement(operation);
// We split the ReDim clauses into separate ReDim operations to ensure that we preserve the evaluation order, // We split the ReDim clauses into separate ReDim operations to ensure that we preserve the evaluation order,
// i.e. each ReDim clause operand is re-allocated prior to evaluating the next clause. // i.e. each ReDim clause operand is re-allocated prior to evaluating the next clause.
// Mark the split ReDim operations as implicit if we have more than one ReDim clause. // Mark the split ReDim operations as implicit if we have more than one ReDim clause.
bool isImplicit = operation.Clauses.Length > 1 || IsImplicit(operation); bool isImplicit = operation.Clauses.Length > 1 || IsImplicit(operation);
foreach (var clause in operation.Clauses) foreach (var clause in operation.Clauses)
{ {
EvalStackFrame frame = PushStackFrame(); EvalStackFrame frame = PushStackFrame();
var visitedReDimClause = VisitReDimClause(clause); var visitedReDimClause = visitReDimClause(clause);
var visitedReDimOperation = new ReDimOperation(ImmutableArray.Create(visitedReDimClause), operation.Preserve, var visitedReDimOperation = new ReDimOperation(ImmutableArray.Create(visitedReDimClause), operation.Preserve,
semanticModel: null, operation.Syntax, operation.Type, operation.ConstantValue, isImplicit: isImplicit || IsImplicit(clause)); semanticModel: null, operation.Syntax, operation.Type, operation.ConstantValue, isImplicit);
AddStatement(visitedReDimOperation); AddStatement(visitedReDimOperation);
PopStackFrameAndLeaveRegion(frame); PopStackFrameAndLeaveRegion(frame);
} }
return null; return FinishVisitingStatement(operation);
IReDimClauseOperation VisitReDimClause(IReDimClauseOperation clause) IReDimClauseOperation visitReDimClause(IReDimClauseOperation clause)
{ {
PushOperand(Visit(clause.Operand)); PushOperand(Visit(clause.Operand));
var visitedDimensionSizes = VisitArray(clause.DimensionSizes); var visitedDimensionSizes = VisitArray(clause.DimensionSizes);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册