Skip to content

Commit

Permalink
Call FetchStackFramesAndVariablesAsync in Microsoft.PowerShell.Editor…
Browse files Browse the repository at this point in the history
…Services.Services.DebugService.SetVariableAsync and in Microsoft.PowerShell.EditorServices.Services.DebugService.EvaluateExpressionAsync to invalidate variables cache and use actual variables data.
  • Loading branch information
Fantoom committed Jul 31, 2024
1 parent 41fce39 commit a59c604
Showing 1 changed file with 8 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -481,6 +481,10 @@ public async Task<string> SetVariableAsync(int variableContainerReferenceId, str
// This makes the returned string consistent with the strings normally displayed for variables in the debugger.
VariableDetails tempVariable = new(psVariable);
_logger.LogTrace($"Set variable '{name}' to: {tempVariable.ValueString ?? "<null>"}");

// Fetch stack frames and variables again to have actual data in the variables field.
// Without this, GetVariables and other methods that use the variables field will use old data.
await FetchStackFramesAndVariablesAsync(null).ConfigureAwait(false);
return tempVariable.ValueString;
}

Expand Down Expand Up @@ -508,6 +512,10 @@ public async Task<VariableDetails> EvaluateExpressionAsync(
command,
cancellationToken,
new PowerShellExecutionOptions { WriteOutputToHost = writeResultAsOutput, ThrowOnError = !writeResultAsOutput }).ConfigureAwait(false);

// Fetch stack frames and variables again to have actual data in the variables field.
// Without this, GetVariables and other methods that use the variables field will use old data.
await FetchStackFramesAndVariablesAsync(null).ConfigureAwait(false);
}
catch (Exception e)
{
Expand Down

0 comments on commit a59c604

Please sign in to comment.