UNPKG

@eagleoutice/flowr-dev

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

46 lines 2.3 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.HappensBeforeQueryDefinition = exports.HappensBeforeKey = void 0; const ansi_1 = require("../../../util/text/ansi"); const time_1 = require("../../../util/text/time"); const joi_1 = __importDefault(require("joi")); const happens_before_query_executor_1 = require("./happens-before-query-executor"); /** * How an answer of the {@link HappensBeforeQuery} is keyed: the two criteria it was asked about, so that both * the executor writing an answer and anyone reading one spell the key the same way. */ exports.HappensBeforeKey = { name: 'HappensBeforeKey', /** The key the answer for `a` and `b` is stored under. */ of(a, b) { return `${a}<${b}`; }, /** The two criteria a key was built from. */ criteria(key) { const at = key.indexOf('<'); return at < 0 ? { a: key, b: '' } : { a: key.slice(0, at), b: key.slice(at + 1) }; } }; exports.HappensBeforeQueryDefinition = { title: 'Happens-Before Query', executor: happens_before_query_executor_1.executeHappensBefore, asciiSummarizer: (formatter, _analyzer, queryResults, result) => { const out = queryResults; result.push(`Query: ${(0, ansi_1.bold)('happens-before', formatter)} (${(0, time_1.printAsMs)(out['.meta'].timing, 0)})`); for (const [fingerprint, value] of Object.entries(out.results)) { const { a, b } = exports.HappensBeforeKey.criteria(fingerprint); result.push(` ╰ ${(0, ansi_1.bold)(a, formatter)} happens before ${(0, ansi_1.bold)(b, formatter)}: ${value}`); } return true; }, schema: joi_1.default.object({ type: joi_1.default.string().valid('happens-before').required().description('The type of the query.'), a: joi_1.default.string().required().description('The first slicing criterion.'), b: joi_1.default.string().required().description('The second slicing criterion.') }).description('Happens-Before tracks whether a always happens before b.'), flattenInvolvedNodes: () => [] }; //# sourceMappingURL=happens-before-query-format.js.map