UNPKG

@eagleoutice/flowr-dev

Version:

Static Dataflow Analyzer and Program Slicer for the R Programming Language

22 lines (21 loc) 1.37 kB
/** * Applying {@link KillReference|kills} (e.g., produced by `rm`) to an {@link REnvironmentInformation}. * @module */ import type { ControlDependency, KillReference } from '../info'; import type { REnvironmentInformation } from './environment'; import type { IdentifierReference } from './identifier'; /** * Accounts for the writes after a kill: a re-definition revives a `named` removal (dropping it), a conditional * one only revives it in its branch, and a wholesale (`all`/`unknown`) removal stays but spares the names written * after it. */ export declare function cancelRevivedKills(kills: readonly KillReference[], writes: readonly IdentifierReference[]): KillReference[]; /** * Applies the given {@link KillReference|kills} to a copy of `env`. `named` kills remove (or, when conditional, * weaken to maybe) a single definition; `all` kills clear the current frame; `unknown` kills weaken every * in-scope definition to maybe. Returns `env` unchanged when there is nothing to apply. */ export declare function applyKills(env: REnvironmentInformation, kills: readonly KillReference[] | undefined): REnvironmentInformation; /** Attaches `cds` to a list of kills, turning them into conditional (maybe) kills. */ export declare function makeKillsMaybe(kills: readonly KillReference[] | undefined, cds: readonly ControlDependency[]): KillReference[];