diff --git a/src/front/wgsl/mod.rs b/src/front/wgsl/mod.rs index 4bbc70231d..7d2ad1dbfb 100644 --- a/src/front/wgsl/mod.rs +++ b/src/front/wgsl/mod.rs @@ -1746,12 +1746,19 @@ impl Parser { ty_resolution.inner_with(ctx.types), ctx.typifier.get(last_component, ctx.types), ) { - (&crate::TypeInner::Vector { size, .. }, &crate::TypeInner::Scalar { .. }) => { - crate::Expression::Splat { - size, - value: last_component, - } - } + ( + &crate::TypeInner::Vector { + size, kind, width, .. + }, + &crate::TypeInner::Scalar { + kind: arg_kind, + width: arg_width, + .. + }, + ) if arg_kind == kind && arg_width == width => crate::Expression::Splat { + size, + value: last_component, + }, ( &crate::TypeInner::Scalar { kind, width, .. }, &crate::TypeInner::Scalar { .. }, diff --git a/src/front/wgsl/tests.rs b/src/front/wgsl/tests.rs index 4297eccde8..d22310945b 100644 --- a/src/front/wgsl/tests.rs +++ b/src/front/wgsl/tests.rs @@ -65,6 +65,22 @@ fn parse_type_cast() { ", ) .unwrap(); + parse_str( + " + fn main() { + let x: vec2 = vec2(0.0); + } + ", + ) + .unwrap(); + assert!(parse_str( + " + fn main() { + let x: vec2 = vec2(0); + } + ", + ) + .is_err()); } #[test]