From 2023b1a72c77914d7a63e949c28ceedc7a0989bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Capucho?= Date: Sun, 6 Jun 2021 14:26:19 +0100 Subject: [PATCH] [glsl-in] Implicit convert initializers --- src/front/glsl/parser.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/front/glsl/parser.rs b/src/front/glsl/parser.rs index 8353f8f745..fa50d99419 100644 --- a/src/front/glsl/parser.rs +++ b/src/front/glsl/parser.rs @@ -527,8 +527,15 @@ impl<'source, 'program, 'options> Parser<'source, 'program, 'options> { let init = self .bump_if(TokenValue::Assign) .map::, _>(|_| { - let (expr, init_meta) = self.parse_initializer(ty, ctx.ctx, ctx.body)?; + let (mut expr, init_meta) = self.parse_initializer(ty, ctx.ctx, ctx.body)?; + + if let Some(kind) = self.program.module.types[ty].inner.scalar_kind() { + ctx.ctx + .implicit_conversion(self.program, &mut expr, init_meta, kind)?; + } + meta = meta.union(&init_meta); + Ok((expr, init_meta)) }) .transpose()?; @@ -541,7 +548,7 @@ impl<'source, 'program, 'options> Parser<'source, 'program, 'options> { let pointer = ctx.add_var(self.program, ty, name, maybe_constant, meta)?; - if let Some((value, _)) = init { + if let Some((value, _)) = init.filter(|_| maybe_constant.is_none()) { ctx.flush_expressions(); ctx.body.push(Statement::Store { pointer, value }); }