[Expressions] Fix execution to forward the same variables context into a subexpression (#120628) (#120922)

This commit is contained in:
Michael Dokolin 2021-12-09 17:31:18 +01:00 committed by GitHub
parent d9aed2a8de
commit 27e86fde49
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 4 deletions

View file

@ -310,6 +310,13 @@ describe('Execution', () => {
const { result } = await run('var name="foo"', { variables });
expect(result).toBe('bar');
});
test('can access variables set from the parent expression', async () => {
const { result } = await run(
'var_set name="a" value="bar" | var_set name="b" value={var name="a"} | var name="b"'
);
expect(result).toBe('bar');
});
});
describe('inspector adapters', () => {

View file

@ -559,10 +559,10 @@ export class Execution<
interpret<T>(ast: ExpressionAstNode, input: T): Observable<ExecutionResult<unknown>> {
switch (getType(ast)) {
case 'expression':
const execution = this.execution.executor.createExecution(
ast as ExpressionAstExpression,
this.execution.params
);
const execution = this.execution.executor.createExecution(ast as ExpressionAstExpression, {
...this.execution.params,
variables: this.context.variables,
});
this.childExecutions.push(execution);
return execution.start(input, true);