This commit fixes compiler bug where it fails when optional values are compiled into absent values in nested calls. - Throw exception with more context for easier future debugging. - Add better validation of argument values for nested calls. - Refactor `FunctionCallCompiler` for better clarity and modularize it to make it more maintainable and testable. - Refactor related interface to not have `I` prefix, and function/variable names for better clarity. Context: Discovered this issue while attempting to call `RunInlineCodeAsTrustedInstaller` which in turn invokes `RunPowerShell` for issue #246. This led to the realization that despite parameters flagged as optional, the nested argument compilation didn't support them.
29 lines
855 B
TypeScript
29 lines
855 B
TypeScript
import { FunctionCall } from '@/application/Parser/Script/Compiler/Function/Call/FunctionCall';
|
|
import { FunctionCallArgumentCollectionStub } from './FunctionCallArgumentCollectionStub';
|
|
|
|
export class FunctionCallStub implements FunctionCall {
|
|
public functionName = 'functionCallStub';
|
|
|
|
public args = new FunctionCallArgumentCollectionStub();
|
|
|
|
public withFunctionName(functionName: string) {
|
|
this.functionName = functionName;
|
|
return this;
|
|
}
|
|
|
|
public withArgument(parameterName: string, argumentValue: string) {
|
|
this.args.withArgument(parameterName, argumentValue);
|
|
return this;
|
|
}
|
|
|
|
public withArguments(args: { readonly [index: string]: string }) {
|
|
this.args.withArguments(args);
|
|
return this;
|
|
}
|
|
|
|
public withArgumentCollection(args: FunctionCallArgumentCollectionStub) {
|
|
this.args = args;
|
|
return this;
|
|
}
|
|
}
|