From dfcb79880f3a42781efc72ae47ea291cbea8efec Mon Sep 17 00:00:00 2001 From: Connor Fitzgerald Date: Thu, 19 Aug 2021 12:55:29 -0400 Subject: [PATCH] [hlsl-out] Fix pointer-to-array arguments (#1240) --- src/back/hlsl/writer.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/back/hlsl/writer.rs b/src/back/hlsl/writer.rs index c42cf9f454..108d2b6c64 100644 --- a/src/back/hlsl/writer.rs +++ b/src/back/hlsl/writer.rs @@ -748,7 +748,7 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> { Ok(()) } - /// Helper method used to write structs + /// Helper method used to write functions /// # Notes /// Ends in a newline fn write_function( @@ -773,8 +773,7 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> { back::FunctionType::Function(handle) => { for (index, arg) in func.arguments.iter().enumerate() { // Write argument type - let ty_inner = &module.types[arg.ty].inner; - let arg_ty = match *ty_inner { + let arg_ty = match module.types[arg.ty].inner { // pointers in function arguments are expected and resolve to `inout` TypeInner::Pointer { base, .. } => { //TODO: can we narrow this down to just `in` when possible? @@ -790,7 +789,7 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> { // Write argument name. Space is important. write!(self.out, " {}", argument_name)?; - if let TypeInner::Array { size, .. } = *ty_inner { + if let TypeInner::Array { size, .. } = module.types[arg.ty].inner { self.write_array_size(module, size)?; } if index < func.arguments.len() - 1 { @@ -1864,7 +1863,7 @@ impl<'a, W: fmt::Write> super::Writer<'a, W> { let (open_b, close_b) = match module.types[ty].inner { TypeInner::Array { .. } | TypeInner::Struct { .. } => ("{ ", " }"), _ => { - // We should write type only for non struct constants + // We should write type only for non struct/array constants self.write_type(module, ty)?; ("(", ")") }