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)); }
protected async Task EvaluateUpToAsync(int to) { if (_store.ValidationError != null || _hasEvaluationError) { return; } try { await InitContextAsync(); while (_lastIndex < to && _blocks.State != BlockState.Done) { EvaluateResult result = await _blocks.EvaluateAsync(); if (result.Type == ResultType.Var) { _store.SaveVariable(_lastIndex, result.Data); _lastIndex++; } } } catch (ExpressionEvaluationFailed ex) { ErrorVariableInformation error = NatvisErrorUtils.LogAndGetExpandChildrenValidationError( Optional ? NatvisLoggingLevel.WARNING : NatvisLoggingLevel.ERROR, _logger, VisualizerName, _variable?.TypeName, ex.Message); _hasEvaluationError = true; if (_lastIndex != 0 || !Optional) { _store.SaveVariable(_lastIndex, error); _lastIndex++; } } }
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); }