msl: add invariance if supported

This commit is contained in:
Dzmitry Malyshau
2022-01-24 09:54:48 -05:00
parent 81dc67402a
commit aea427fa92
4 changed files with 18 additions and 11 deletions

View File

@@ -381,11 +381,10 @@ impl ResolvedBinding {
Ok(())
}
fn try_fmt_decorated<W: Write>(&self, out: &mut W, terminator: &str) -> Result<(), Error> {
fn try_fmt_decorated<W: Write>(&self, out: &mut W) -> Result<(), Error> {
write!(out, " [[")?;
self.try_fmt(out)?;
write!(out, "]]")?;
write!(out, "{}", terminator)?;
Ok(())
}
}

View File

@@ -2862,7 +2862,7 @@ impl<W: Write> Writer<W> {
};
let resolved = options.resolve_local_binding(binding, in_mode)?;
write!(self.out, "{}{} {}", back::INDENT, ty_name, name)?;
resolved.try_fmt_decorated(&mut self.out, "")?;
resolved.try_fmt_decorated(&mut self.out)?;
writeln!(self.out, ";")?;
}
writeln!(self.out, "}};")?;
@@ -2931,11 +2931,17 @@ impl<W: Write> Writer<W> {
};
let resolved = options.resolve_local_binding(binding, out_mode)?;
write!(self.out, "{}{} {}", back::INDENT, ty_name, name)?;
resolved.try_fmt_decorated(&mut self.out, "")?;
if let Some(array_len) = array_len {
write!(self.out, " [{}]", array_len)?;
}
writeln!(self.out, ";")?;
write!(self.out, " [[")?;
resolved.try_fmt(&mut self.out)?;
if options.lang_version >= (2, 3)
&& *binding == crate::Binding::BuiltIn(crate::BuiltIn::Position)
{
write!(self.out, ", invariant")?;
}
writeln!(self.out, "]];")?;
}
if pipeline_options.allow_point_size
@@ -2986,7 +2992,8 @@ impl<W: Write> Writer<W> {
','
};
write!(self.out, "{} {} {}", separator, ty_name, name)?;
resolved.try_fmt_decorated(&mut self.out, "\n")?;
resolved.try_fmt_decorated(&mut self.out)?;
writeln!(self.out)?;
}
for (handle, var) in module.global_variables.iter() {
let usage = fun_info[handle];
@@ -3026,7 +3033,7 @@ impl<W: Write> Writer<W> {
write!(self.out, "{} ", separator)?;
tyvar.try_fmt(&mut self.out)?;
if let Some(resolved) = resolved {
resolved.try_fmt_decorated(&mut self.out, "")?;
resolved.try_fmt_decorated(&mut self.out)?;
}
if let Some(value) = var.init {
let coco = ConstantContext {
@@ -3053,7 +3060,8 @@ impl<W: Write> Writer<W> {
"{} constant _mslBufferSizes& _buffer_sizes",
separator,
)?;
resolved.try_fmt_decorated(&mut self.out, "\n")?;
resolved.try_fmt_decorated(&mut self.out)?;
writeln!(self.out)?;
}
// end of the entry point argument list