naga/valid/expression/
builtin.rs

1use crate::arena::Handle;
2
3#[derive(Clone, Debug, thiserror::Error)]
4#[cfg_attr(test, derive(PartialEq))]
5pub enum ZeroValueError {
6    #[error("ZeroValue construction of runtime-sized array is not allowed")]
7    RuntimeSizedArray,
8}
9
10pub fn validate_zero_value(
11    self_ty_handle: Handle<crate::Type>,
12    gctx: crate::proc::GlobalCtx,
13) -> Result<(), ZeroValueError> {
14    use crate::TypeInner as Ti;
15    match gctx.types[self_ty_handle].inner {
16        Ti::Array {
17            base: _,
18            size: crate::ArraySize::Dynamic,
19            stride: _,
20        } => {
21            log::error!("Constructing zero value of runtime-sized array");
22            Err(ZeroValueError::RuntimeSizedArray)
23        }
24        _ => Ok(()),
25    }
26}