///|
fn WgslIrValidator::validate_global_expression_handle(
  self : WgslIrValidator,
  handle : Handle,
) -> Unit raise WgslIrValidationError {
  if handle.index() < 0 ||
    handle.index() >= self.shader_module.global_expressions.items.length() {
    raise InvalidGlobalExpressionHandle(handle.index())
  }
}

///|
fn WgslIrValidator::validate_function_expression_handle(
  self : WgslIrValidator,
  function : Function,
  handle : Handle,
) -> Unit raise WgslIrValidationError {
  ignore(self)
  if handle.index() < 0 || handle.index() >= function.expressions.items.length() {
    raise InvalidFunctionExpressionHandle(handle.index())
  }
}

///|
fn WgslIrValidator::validate_function_expression_range(
  self : WgslIrValidator,
  function : Function,
  range : HandleRange,
) -> Unit raise WgslIrValidationError {
  ignore(self)
  if range.start.index() < 0 ||
    range.end.index() < range.start.index() ||
    range.end.index() >= function.expressions.items.length() {
    raise InvalidHandleRange(range.start.index(), range.end.index())
  }
}

///|
fn WgslIrValidator::require_type(
  self : WgslIrValidator,
  handle : Handle,
) -> Unit raise WgslIrValidationError {
  if handle.index() < 0 ||
    handle.index() >= self.shader_module.types.items.length() {
    raise InvalidTypeHandle(handle.index())
  }
}

///|
fn WgslIrValidator::require_constant(
  self : WgslIrValidator,
  handle : Handle,
) -> Unit raise WgslIrValidationError {
  if handle.index() < 0 ||
    handle.index() >= self.shader_module.constants.items.length() {
    raise InvalidConstantHandle(handle.index())
  }
}

///|
fn WgslIrValidator::require_override(
  self : WgslIrValidator,
  handle : Handle,
) -> Unit raise WgslIrValidationError {
  if handle.index() < 0 ||
    handle.index() >= self.shader_module.overrides.items.length() {
    raise InvalidOverrideHandle(handle.index())
  }
}

///|
fn WgslIrValidator::require_global_variable(
  self : WgslIrValidator,
  handle : Handle,
) -> Unit raise WgslIrValidationError {
  if handle.index() < 0 ||
    handle.index() >= self.shader_module.global_variables.items.length() {
    raise InvalidGlobalVariableHandle(handle.index())
  }
}

///|
fn WgslIrValidator::require_function(
  self : WgslIrValidator,
  handle : Handle,
) -> Unit raise WgslIrValidationError {
  if handle.index() < 0 ||
    handle.index() >= self.shader_module.functions.items.length() {
    raise InvalidFunctionHandle(handle.index())
  }
}

///|
fn WgslIrValidator::require_local_variable(
  self : WgslIrValidator,
  function : Function,
  handle : Handle,
) -> Unit raise WgslIrValidationError {
  ignore(self)
  if handle.index() < 0 ||
    handle.index() >= function.local_variables.items.length() {
    raise InvalidLocalVariableHandle(handle.index())
  }
}