All files / PARSE/1-Discover/types IPipelineFile.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                                                                                                               
import IDiscoveredFile from "./IDiscoveredFile";
 
/**
 * One C-Next file of the `SourceGraph` 1.1 Discover emits.
 *
 * A files run and a source run build the same record: discovery read every
 * file's text, or was handed the root's, and 1.2 parses exactly that.
 */
interface IPipelineFile {
  /** Absolute path to the source file */
  readonly path: string;
 
  /**
   * The text 1.1 Discover read for this file, or was handed for a source run's
   * root, and the text 1.2 parses. Required: one read, so a save between the
   * passes cannot give them different directives (#1835 review). #1444 review:
   * it was optional, so a later stage could still read the file again through
   * the port, and `Transpiler` did.
   */
  readonly source: string;
 
  /** The discovered file metadata (type, extension) */
  readonly discoveredFile: IDiscoveredFile;
 
  /** When true, collect symbols only — skip code generation */
  readonly symbolOnly?: boolean;
 
  /**
   * This file's direct `.cnx` includes, as discovery resolved them.
   *
   * #1435: required, because 1.4 Resolve takes each file's visibility closure
   * over exactly this graph. It was set in source mode only, so every file on
   * the CLI path had 1.4 re-read it from disk under a weaker search path.
   */
  readonly cnextIncludes: ReadonlyArray<{ path: string }>;
 
  /**
   * Whether this file can see a C/C++ header, directly or through any `.cnx`
   * it includes.
   *
   * #1399 review: E0426/E0427 may only fire where the transpiler knows the
   * file's whole name universe. A header is not parsed into the symbol table
   * and a `#define` never reaches it at all, so a file that can see one must
   * decline to answer. Computed from the resolver's own categorization during
   * discovery, which is the authoritative answer -- deriving it from `#include`
   * token text in the analyzer made a third spelling of "is this a C-Next
   * include?" and that spelling missed `.cnext`.
   */
  readonly reachesForeignHeader: boolean;
 
  /** Override for source-relative path (used in source mode) */
  readonly sourceRelativePath?: string;
}
 
export default IPipelineFile;