From c803240587d4360741365b9b7ef27358d5bf6be2 Mon Sep 17 00:00:00 2001 From: Dzmitry Malyshau Date: Mon, 25 Jan 2021 00:54:14 -0500 Subject: [PATCH] [wgsl] resolve types across functions --- src/front/wgsl/mod.rs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/front/wgsl/mod.rs b/src/front/wgsl/mod.rs index fbff173b95..5d2ebee492 100644 --- a/src/front/wgsl/mod.rs +++ b/src/front/wgsl/mod.rs @@ -117,6 +117,7 @@ struct StatementContext<'input, 'temp, 'out> { types: &'out mut Arena, constants: &'out mut Arena, global_vars: &'out Arena, + functions: &'out Arena, arguments: &'out [crate::FunctionArgument], } @@ -130,6 +131,7 @@ impl<'a> StatementContext<'a, '_, '_> { types: self.types, constants: self.constants, global_vars: self.global_vars, + functions: self.functions, arguments: self.arguments, } } @@ -143,6 +145,7 @@ impl<'a> StatementContext<'a, '_, '_> { constants: self.constants, global_vars: self.global_vars, local_vars: self.variables, + functions: self.functions, arguments: self.arguments, } } @@ -163,6 +166,7 @@ struct ExpressionContext<'input, 'temp, 'out> { global_vars: &'out Arena, local_vars: &'out Arena, arguments: &'out [crate::FunctionArgument], + functions: &'out Arena, } impl<'a> ExpressionContext<'a, '_, '_> { @@ -175,6 +179,7 @@ impl<'a> ExpressionContext<'a, '_, '_> { constants: self.constants, global_vars: self.global_vars, local_vars: self.local_vars, + functions: self.functions, arguments: self.arguments, } } @@ -183,12 +188,11 @@ impl<'a> ExpressionContext<'a, '_, '_> { &mut self, handle: Handle, ) -> Result<&crate::TypeInner, Error<'a>> { - let functions = Arena::new(); //TODO let resolve_ctx = ResolveContext { constants: self.constants, global_vars: self.global_vars, local_vars: self.local_vars, - functions: &functions, + functions: self.functions, arguments: self.arguments, }; match self @@ -1815,6 +1819,7 @@ impl Parser { types: &mut module.types, constants: &mut module.constants, global_vars: &module.global_variables, + functions: &module.functions, arguments: &fun.arguments, }, )?;