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;
|