UNPKG

@eagleoutice/flowr

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

39 lines 1.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.processQuote = processQuote; const known_call_handling_1 = require("../known-call-handling"); const edge_1 = require("../../../../../graph/edge"); const built_in_proc_name_1 = require("../../../../../environments/built-in-proc-name"); /** * Process a call to `quote` or similar nse/substitution functions. */ function processQuote(name, args, rootId, data, config) { const startEnv = data.environment; const { information, processedArguments, fnRef } = (0, known_call_handling_1.processKnownFunctionCall)({ name, args, rootId, data, forceArgs: config.forceArgs, origin: built_in_proc_name_1.BuiltInProcName.Quote }); let inRefs = [fnRef]; let outRefs = []; let unknownRefs = []; for (let i = 0; i < args.length; i++) { const processedArg = processedArguments[i]; if (processedArg && i !== config?.quoteArgumentsWithIndex) { inRefs = inRefs.concat(processedArg.in); outRefs = outRefs.concat(processedArg.out); unknownRefs = unknownRefs.concat(processedArg.unknownReferences); } else if (processedArg) { information.graph.addEdge(rootId, processedArg.entryPoint, edge_1.EdgeType.NonStandardEvaluation); /* nse actually affects _everything_ within that argument! */ for (const [vtx] of processedArg.graph.vertices(true)) { information.graph.addEdge(rootId, vtx, edge_1.EdgeType.NonStandardEvaluation); } } } return { ...information, environment: startEnv, in: inRefs, out: outRefs, unknownReferences: unknownRefs }; } //# sourceMappingURL=built-in-quote.js.map