All files / types/symbols IParameterInfo.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                                                                                       
import type TType from "../TType";
import type TConstExpr from "../TConstExpr";
 
/**
 * Metadata for a function parameter.
 */
interface IParameterInfo {
  /** Parameter name */
  readonly name: string;
 
  /** Parameter type */
  readonly type: TType;
 
  /** Whether this parameter is const */
  readonly isConst: boolean;
 
  /** Whether this parameter is an array */
  readonly isArray: boolean;
 
  /** Array dimensions if isArray is true */
  readonly arrayDimensions?: ReadonlyArray<number | string>;
  /**
   * #1175: each dimension as written, index-aligned with the dimensions --
   * null where 1.3 already knew the size (a literal, `sizeof` of a primitive,
   * an unsized `[]`). 1.4 Resolve settles the rest from this, never from
   * source text.
   */
  readonly arrayDimensionExprs?: ReadonlyArray<TConstExpr | null>;
 
  /** Issue #268: true if parameter should get auto-const (unmodified pointer) */
  readonly isAutoConst?: boolean;
 
  /**
   * ADR-030 / #1722: the parameter's type is an opaque (incomplete) C type, so
   * it is held through a pointer -- for an array, each element is. Decided
   * once, by 1.4 Resolve, which knows which typedefs never received a body;
   * the `.c` signature, its call sites and the `.h` prototype all read this
   * stamp rather than asking the type again, so they cannot disagree.
   */
  readonly isOpaqueHandle?: boolean;
}
 
export default IParameterInfo;