UNPKG

@eagleoutice/flowr

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

39 lines 1.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fingerPrintOfQuery = fingerPrintOfQuery; exports.executeResolveValueQuery = executeResolveValueQuery; const log_1 = require("../../../util/log"); const parse_1 = require("../../../slicing/criterion/parse"); const df_helper_1 = require("../../../dataflow/graph/df-helper"); /** * Produce a fingerprint string for an origin query */ function fingerPrintOfQuery(query) { return query.criterion; } /** * Execute origin queries, catching duplicates with the same fingerprint */ async function executeResolveValueQuery({ analyzer }, queries) { const start = Date.now(); const results = {}; for (const query of queries) { const key = fingerPrintOfQuery(query); if (results[key]) { log_1.log.warn(`Duplicate Key for origin-query: ${key}, skipping...`); } const astId = parse_1.SlicingCriterion.tryParse(key, (await analyzer.normalize()).idMap); if (astId === undefined) { log_1.log.warn(`Could not resolve id for ${key}, skipping...`); continue; } results[key] = df_helper_1.Dataflow.origin((await analyzer.dataflow()).graph, astId); } return { '.meta': { timing: Date.now() - start }, results }; } //# sourceMappingURL=origin-query-executor.js.map