amendConfig( config: FlowrConfigOptions, amendmentFunc: ( config: { abstractInterpretation: { dataFrame: { maxColNames: number; readLoadedData: { maxReadLines: number; readExternalFiles: boolean }; }; wideningThreshold: number; }; defaultEngine?: "r-shell" | "tree-sitter"; engines: (
| { rPath?: string; type: "r-shell"; [key: string]: unknown } | { lax?: boolean; treeSitterWasmPath?: string; type: "tree-sitter"; wasmPath?: string; [key: string]: unknown; } )
[]; ignoreSourceCalls: boolean; project: { resolveUnknownPathsOnDisk: boolean }; repl: { dfProcessorHeat: boolean; quickStats: boolean }; semantics: { environment: { overwriteBuiltIns: { definitions: (
| { assumePrimitive?: boolean; names: Identifier[]; type: "constant"; value: unknown; } | { assumePrimitive?: boolean; config: { readIndices: boolean }; names: Identifier[]; suffixes: (
"<-" | "<<-")
[]; type: "replacement"; } | { assumePrimitive?: boolean; config?: | { forceArgs?: (...)
| (...)
| (...)
; libFn?: (...)
| (...)
| (...)
; treatIndicesAsString: boolean; } | { indexOfFunction?: (...)
| (...)
; libFn?: (...)
| (...)
| (...)
; nameOfFunctionArgument?: (...)
| (...)
; resolveInEnvironment?: (...)
| (...)
| (...)
; resolveValue?: (...)
| (...)
| (...)
; unquoteFunction?: (...)
| (...)
| (...)
; [key: string]: unknown; } | { canBeReplacement?: (...)
| (...)
| (...)
; forceArgs?: (...)
| (...)
| (...)
; indicesCollection?: (...)
| (...)
; libFn?: (...)
| (...)
| (...)
; makeMaybe?: (...)
| (...)
| (...)
; mayHaveMoreArgs?: (...)
| (...)
| (...)
; quoteSource?: (...)
| (...)
| (...)
; superAssignment?: (...)
| (...)
| (...)
; swapSourceAndTarget?: (...)
| (...)
| (...)
; targetVariable?: (...)
| (...)
| (...)
; } | { canBeReplacement?: (...)
| (...)
| (...)
; forceArgs?: (...)
| (...)
| (...)
; indicesCollection?: (...)
| (...)
; libFn?: (...)
| (...)
| (...)
; makeMaybe?: (...)
| (...)
| (...)
; mayHaveMoreArgs?: (...)
| (...)
| (...)
; quoteSource?: (...)
| (...)
| (...)
; source: { idx?: ...
; name: ...
}; superAssignment?: (...)
| (...)
| (...)
; swapSourceAndTarget?: (...)
| (...)
| (...)
; target: { idx?: ...
; name: ...
}; targetVariable?: (...)
| (...)
| (...)
; } | { cfg?: (...)
| (...)
; forceArgs?: (...)
| (...)
| (...)
; hasUnknownSideEffects?: (...)
| (...)
| (...)
| (...)
; libFn?: (...)
| (...)
| (...)
; readAllArguments?: (...)
| (...)
| (...)
; returnsNthArgument?: (...)
| (...)
| (...)
; treatAsFnCall?: (...)
| (...)
; useAsProcessor?: (...)
| (...)
; } | { includeFunctionCall?: (...)
| (...)
| (...)
; libFn?: (...)
| (...)
| (...)
; } | { forceArgs?: (...)
| (...)
| (...)
; libFn?: (...)
| (...)
| (...)
; quoteArgumentsWithIndex?: (...)
| (...)
; } | { args: { add?: ...
; after?: ...
; expr: ...
}; hook: OnFnExit; libFn?: (...)
| (...)
| (...)
; } | { activeIndices?: (...)
| (...)
; assignmentOperator?: (...)
| (...)
| (...)
; assignRootId?: (...)
| (...)
; forceArgs?: (...)
| (...)
| (...)
; libFn?: (...)
| (...)
| (...)
; makeMaybe?: (...)
| (...)
| (...)
; readIndices?: (...)
| (...)
| (...)
; } | { forceFollow?: (...)
| (...)
| (...)
; includeFunctionCall?: (...)
| (...)
| (...)
; libFn?: (...)
| (...)
| (...)
; } | { evalRhsWhen: boolean; forceArgs?: (...)
| (...)
| (...)
; lazy: boolean; libFn?: (...)
| (...)
| (...)
; } | { block: string; handlers: { error?: ...
; finally?: ...
}; libFn?: (...)
| (...)
| (...)
; }; evalHandler?: string; names: Identifier[]; processor: | "builtin:access" | "builtin:apply" | "builtin:assignment" | "builtin:assignment-like" | "builtin:default" | "builtin:eval" | "builtin:expression-list" | "builtin:for-loop" | "builtin:function-definition" | "builtin:get" | "builtin:if-then-else" | "builtin:library" | "builtin:list" | "builtin:pipe" | "builtin:quote" | "builtin:register-hook" | "builtin:repeat-loop" | "builtin:replacement" | "builtin:rm" | "builtin:source" | "builtin:special-bin-op" | "builtin:stopifnot" | "builtin:try" | "builtin:vector" | "builtin:while-loop"; type: "function"; } )
[]; loadDefaults?: boolean; }; }; }; solver: { evalStrings: boolean; instrument: { dataflowExtractors?: ( extractor: DataflowProcessors<ParentInformation>, ctx: FlowrAnalyzerContext, ) => DataflowProcessors<ParentInformation>; }; pointerTracking: boolean | { maxIndexCount: number }; resolveSource?: { applyReplacements?: { [key: string]: string }[]; dropPaths: DropPathsOption; ignoreCapitalization: boolean; inferWorkingDirectory: InferWorkingDirectory; repeatedSourceLimit?: number; searchPath: string[]; [key: string]: unknown; }; slicer?: { threshold?: number }; variables: VariableResolve; }; [key: string]: unknown; }, ) => void | FlowrConfigOptions,): FlowrConfigOptions Parameters
- config: FlowrConfigOptions
- amendmentFunc: (
config: {
abstractInterpretation: {
dataFrame: {
maxColNames: number;
readLoadedData: { maxReadLines: number; readExternalFiles: boolean };
};
wideningThreshold: number;
};
defaultEngine?: "r-shell"
| "tree-sitter";
engines: (
| { rPath?: string; type: "r-shell"; [key: string]: unknown }
| {
lax?: boolean;
treeSitterWasmPath?: string;
type: "tree-sitter";
wasmPath?: string;
[key: string]: unknown;
}
)[];
ignoreSourceCalls: boolean;
project: { resolveUnknownPathsOnDisk: boolean };
repl: { dfProcessorHeat: boolean; quickStats: boolean };
semantics: {
environment: {
overwriteBuiltIns: {
definitions: (
| {
assumePrimitive?: boolean;
names: Identifier[];
type: "constant";
value: unknown;
}
| {
assumePrimitive?: boolean;
config: { readIndices: boolean };
names: Identifier[];
suffixes: ("<-" | "<<-")[];
type: "replacement";
}
| {
assumePrimitive?: boolean;
config?: | {
forceArgs?: (...)
| (...)
| (...);
libFn?: (...) | (...) | (...);
treatIndicesAsString: boolean;
}
| {
indexOfFunction?: (...)
| (...);
libFn?: (...) | (...) | (...);
nameOfFunctionArgument?: (...) | (...);
resolveInEnvironment?: (...) | (...) | (...);
resolveValue?: (...) | (...) | (...);
unquoteFunction?: (...) | (...) | (...);
[key: string]: unknown;
}
| {
canBeReplacement?: (...)
| (...)
| (...);
forceArgs?: (...) | (...) | (...);
indicesCollection?: (...) | (...);
libFn?: (...) | (...) | (...);
makeMaybe?: (...) | (...) | (...);
mayHaveMoreArgs?: (...) | (...) | (...);
quoteSource?: (...) | (...) | (...);
superAssignment?: (...) | (...) | (...);
swapSourceAndTarget?: (...) | (...) | (...);
targetVariable?: (...) | (...) | (...);
}
| {
canBeReplacement?: (...)
| (...)
| (...);
forceArgs?: (...) | (...) | (...);
indicesCollection?: (...) | (...);
libFn?: (...) | (...) | (...);
makeMaybe?: (...) | (...) | (...);
mayHaveMoreArgs?: (...) | (...) | (...);
quoteSource?: (...) | (...) | (...);
source: { idx?: ...; name: ... };
superAssignment?: (...) | (...) | (...);
swapSourceAndTarget?: (...) | (...) | (...);
target: { idx?: ...; name: ... };
targetVariable?: (...) | (...) | (...);
}
| {
cfg?: (...)
| (...);
forceArgs?: (...) | (...) | (...);
hasUnknownSideEffects?: (...) | (...) | (...) | (...);
libFn?: (...) | (...) | (...);
readAllArguments?: (...) | (...) | (...);
returnsNthArgument?: (...) | (...) | (...);
treatAsFnCall?: (...) | (...);
useAsProcessor?: (...) | (...);
}
| {
includeFunctionCall?: (...)
| (...)
| (...);
libFn?: (...) | (...) | (...);
}
| {
forceArgs?: (...)
| (...)
| (...);
libFn?: (...) | (...) | (...);
quoteArgumentsWithIndex?: (...) | (...);
}
| {
args: { add?: ...; after?: ...; expr: ... };
hook: OnFnExit;
libFn?: (...) | (...) | (...);
}
| {
activeIndices?: (...)
| (...);
assignmentOperator?: (...) | (...) | (...);
assignRootId?: (...) | (...);
forceArgs?: (...) | (...) | (...);
libFn?: (...) | (...) | (...);
makeMaybe?: (...) | (...) | (...);
readIndices?: (...) | (...) | (...);
}
| {
forceFollow?: (...)
| (...)
| (...);
includeFunctionCall?: (...) | (...) | (...);
libFn?: (...) | (...) | (...);
}
| {
evalRhsWhen: boolean;
forceArgs?: (...)
| (...)
| (...);
lazy: boolean;
libFn?: (...) | (...) | (...);
}
| {
block: string;
handlers: { error?: ...; finally?: ... };
libFn?: (...) | (...) | (...);
};
evalHandler?: string;
names: Identifier[];
processor: | "builtin:access"
| "builtin:apply"
| "builtin:assignment"
| "builtin:assignment-like"
| "builtin:default"
| "builtin:eval"
| "builtin:expression-list"
| "builtin:for-loop"
| "builtin:function-definition"
| "builtin:get"
| "builtin:if-then-else"
| "builtin:library"
| "builtin:list"
| "builtin:pipe"
| "builtin:quote"
| "builtin:register-hook"
| "builtin:repeat-loop"
| "builtin:replacement"
| "builtin:rm"
| "builtin:source"
| "builtin:special-bin-op"
| "builtin:stopifnot"
| "builtin:try"
| "builtin:vector"
| "builtin:while-loop";
type: "function";
}
)[];
loadDefaults?: boolean;
};
};
};
solver: {
evalStrings: boolean;
instrument: {
dataflowExtractors?: (
extractor: DataflowProcessors<ParentInformation>,
ctx: FlowrAnalyzerContext,
) => DataflowProcessors<ParentInformation>;
};
pointerTracking: boolean
| { maxIndexCount: number };
resolveSource?: {
applyReplacements?: { [key: string]: string }[];
dropPaths: DropPathsOption;
ignoreCapitalization: boolean;
inferWorkingDirectory: InferWorkingDirectory;
repeatedSourceLimit?: number;
searchPath: string[];
[key: string]: unknown;
};
slicer?: { threshold?: number };
variables: VariableResolve;
};
[key: string]: unknown;
},
) => void
| FlowrConfigOptions
Creates a new flowr config that has the updated values.