All files / utils ParameterUtils.ts

100% Statements 2/2
100% Branches 6/6
100% Functions 2/2
100% Lines 2/2

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                                                20x                                               3x              
/**
 * Factory functions and type guards for IParameterInfo.
 *
 * Provides utilities for creating and inspecting C-Next function parameters.
 */
import type IParameterInfo from "../transpiler/types/symbols/IParameterInfo";
import type TType from "../transpiler/types/TType";
 
class ParameterUtils {
  // ============================================================================
  // Factory Functions
  // ============================================================================
 
  /**
   * Create a parameter with the given properties.
   */
  static create(options: {
    name: string;
    type: TType;
    isConst: boolean;
    isArray: boolean;
    arrayDimensions?: ReadonlyArray<number | string>;
    isAutoConst?: boolean;
  }): IParameterInfo {
    return {
      name: options.name,
      type: options.type,
      isConst: options.isConst,
      isArray: options.isArray,
      ...(options.arrayDimensions !== undefined && {
        arrayDimensions: options.arrayDimensions,
      }),
      ...(options.isAutoConst !== undefined && {
        isAutoConst: options.isAutoConst,
      }),
    };
  }
 
  // ============================================================================
  // Type Guards
  // ============================================================================
 
  /**
   * Check if parameter has array dimensions.
   *
   * Returns true if arrayDimensions is defined and has at least one dimension.
   */
  static isArray(param: IParameterInfo): boolean {
    return (
      param.arrayDimensions !== undefined && param.arrayDimensions.length > 0
    );
  }
}
 
export default ParameterUtils;