UNPKG

@eagleoutice/flowr-dev

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

34 lines 1.41 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 resolve_by_name_1 = require("../../../dataflow/environments/resolve-by-name"); const node_id_1 = require("../../../r-bridge/lang-4.x/ast/model/processing/node-id"); function fingerPrintOfQuery(query) { return JSON.stringify(query); } function executeResolveValueQuery({ dataflow: { graph, environment }, ast }, 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 resolve-value-query: ${key}, skipping...`); } const values = query.criteria .map(criteria => (0, node_id_1.recoverName)((0, parse_1.slicingCriterionToId)(criteria, ast.idMap), ast.idMap)) .flatMap(ident => (0, resolve_by_name_1.resolveToValues)(ident, environment, graph.idMap ?? ast.idMap)); results[key] = { values: [...new Set(values)] }; } return { '.meta': { timing: Date.now() - start }, results }; } //# sourceMappingURL=resolve-value-query-executor.js.map