@eagleoutice/flowr-dev
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
27 lines • 1.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.signatureParameterSpec = signatureParameterSpec;
exports.matchArgumentsToSignature = matchArgumentsToSignature;
exports.argumentForParameter = argumentForParameter;
const linker_1 = require("../../dataflow/internal/linker");
/** the {@link pMatch} parameter spec of a *known* signature: every formal maps to itself as its own target */
function signatureParameterSpec(signature) {
const spec = {};
for (const p of signature) {
spec[p.name] = p.name;
}
return spec;
}
/**
* {@link pMatch|Matches} a call's `args` against a *known* signature (typically from the signature database via
* `PackageSignatureSource.functions(pkg)`), returning per parameter name the id(s) bound to it, e.g.
* `matchArgumentsToSignature(ggplotCall.args, ggplotSignature).get('data')`.
*/
function matchArgumentsToSignature(args, signature) {
return (0, linker_1.pMatch)(args, signatureParameterSpec(signature));
}
/** the id(s) {@link matchArgumentsToSignature} binds to a single `parameter`, `undefined` if nothing is */
function argumentForParameter(args, signature, parameter) {
return matchArgumentsToSignature(args, signature).get(parameter);
}
//# sourceMappingURL=signature-match.js.map