public async Task <EvaluateResult> EvaluateAsync() { if (State == BlockState.Done) { return(EvaluateResult.None()); } State = BlockState.InProgress; if (_loopInstructions.State == BlockState.Done) { _loopInstructions.Reset(); } if (_loopInstructions.State == BlockState.New && !await _evaluator.EvaluateConditionAsync(_loop.Condition, _ctx.Variable, _ctx.NatvisScope)) { State = BlockState.Done; return(EvaluateResult.None()); } EvaluateResult result = await _loopInstructions.EvaluateAsync(); if (result.Type == ResultType.Break) { State = BlockState.Done; return(EvaluateResult.None()); } return(result); }
public async Task <EvaluateResult> EvaluateAsync() { if (State == BlockState.Done) { return(EvaluateResult.None()); } State = BlockState.Done; return(await _evaluator.EvaluateConditionAsync(_breakType.Condition, _ctx.Variable, _ctx.NatvisScope) ? EvaluateResult.Break() : EvaluateResult.None()); }
public async Task <EvaluateResult> EvaluateAsync() { if (State == BlockState.Done) { return(EvaluateResult.None()); } State = BlockState.Done; if (await _evaluator.EvaluateConditionAsync(_exec.Condition, _ctx.Variable, _ctx.NatvisScope)) { await _evaluator.EvaluateExpressionAsync(_exec.Value, _ctx.Variable, _ctx.NatvisScope, null); } return(EvaluateResult.None()); }
public async Task <EvaluateResult> EvaluateAsync() { if (State == BlockState.Done) { return(EvaluateResult.None()); } State = BlockState.Done; if (!await _evaluator.EvaluateConditionAsync(_customListItem.Condition, _ctx.Variable, _ctx.NatvisScope)) { return(EvaluateResult.None()); } string name = await EvaluateItemNameAsync(_customListItem.Name, _ctx); IVariableInformation result = await _evaluator.EvaluateExpressionAsync( _customListItem.Value, _ctx.Variable, _ctx.NatvisScope, name); return(EvaluateResult.Some(result)); }
public async Task <EvaluateResult> EvaluateAsync() { if (State == BlockState.Done) { return(EvaluateResult.None()); } State = BlockState.InProgress; if (_trueBlock == null) { for (int i = 0; i < _conditionGroup.ConditionalCode.Count; i++) { ConditionalCodeBlock branch = _conditionGroup.ConditionalCode[i]; if (await _evaluator.EvaluateConditionAsync(branch.Condition, _ctx.Variable, _ctx.NatvisScope)) { _trueBlock = _innerBlocks[i]; break; } } if (_trueBlock == null) { State = BlockState.Done; return(EvaluateResult.None()); } } EvaluateResult result = await _trueBlock.EvaluateAsync(); if (_trueBlock.State == BlockState.Done) { State = BlockState.Done; } return(result); }
public async Task <EvaluateResult> EvaluateAsync() { if (_position >= _blocks.Count) { State = BlockState.Done; return(EvaluateResult.None()); } State = BlockState.InProgress; ICodeBlock currentBlock = _blocks[_position]; EvaluateResult result = await currentBlock.EvaluateAsync(); if (result.Type == ResultType.Break) { State = BlockState.Done; } else if (currentBlock.State == BlockState.Done) { _position++; } return(result); }