All files / cnx/PARSE/4-Resolve/types ISettledFiles.ts

0% Statements 0/0
0% Branches 0/0
0% Functions 0/0
0% Lines 0/0

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56                                                                                                               
/**
 * Every file's symbols as 1.4 Resolve settles them, with the facts the
 * settling derived on the way (#2036).
 *
 * `Program.build` assembles its query surface from exactly this, and a caller
 * with no run -- `lib/parseWithSymbols`, which has one file and no mode or
 * target -- reads `symbolsByFile` alone. Both settle through the one step, so
 * the symbols an editor lists are the symbols a run generates from.
 *
 * The foreign symbols and visibility travel with the result, defaults applied,
 * so `build` reads what the files were settled against rather than resolving
 * its own copy of each default.
 */
import type ILexicalFrame from "../../../types/ILexicalFrame";
import type TSymbol from "../../../types/symbols/TSymbol";
import type IFileConstantFacts from "./IFileConstantFacts";
import type IForeignSymbols from "./IForeignSymbols";
import type IForeignValue from "./IForeignValue";
import type ISettledConstants from "./ISettledConstants";
import type IVisibilityInput from "./IVisibilityInput";
import type TRunTarget from "../../../types/TRunTarget";
 
interface ISettledFiles {
  /** Each file's symbols: types, const-folded dimensions, parameter names */
  readonly symbolsByFile: ReadonlyMap<string, ReadonlyArray<TSymbol>>;
  /** Each file's lexical frames, settled against what that file can see */
  readonly framesByFile: ReadonlyMap<string, ILexicalFrame>;
  /** Every const's and enum member's value, settled once for all files */
  readonly constants: ISettledConstants;
  /** ADR-057: whether `sourceFile` can see a scope type (#1724) */
  readonly isScopeTypeVisibleFrom: (
    sourceFile: string,
    qualifiedName: string,
  ) => boolean;
  /** What a constant name's facts read of the files (#1175) */
  readonly fileFacts: IFileConstantFacts;
  /** ADR-030: the typedefs that never received a body (#1722) */
  readonly opaqueTypes: ReadonlySet<string>;
  /** Each file's include closure, by path (#1435) */
  readonly visibleFiles: ReadonlyMap<string, ReadonlySet<string>>;
  /** Every name a C or C++ header declares */
  readonly foreignNames: ReadonlySet<string>;
  /** #1881: each file's foreign names, by its own header includes */
  readonly foreignNamesByFile: ReadonlyMap<string, ReadonlySet<string>>;
  /** The values the headers' constants and macros carry */
  readonly foreignValues: ReadonlyMap<string, IForeignValue>;
  /** What the C and C++ headers contributed, or none */
  readonly foreign: IForeignSymbols;
  /** Which cnx files each file includes, or none */
  readonly visibility: IVisibilityInput;
  /** The run's target, which a header's length properties are folded for; null with none */
  readonly target: TRunTarget | null;
}
 
export default ISettledFiles;