Closed
Description
Describe the bug
Rustfmt removes argument attribute when line is long!
To Reproduce
- Put this in a file
temp.rs
#[macro_export]
macro_rules! main {
() => {
#[spirv(fragment)]
pub fn main_fs(
mut out_color: ::spirv_std::storage_class::Output<Vec4>,
#[spirv(frag_coord)] frag_coord: ::spirv_std::storage_class::Input<
::spirv_std::glam::Vec4,
>,
#[spirv(descriptor_set = 1)] iChannel0: ::spirv_std::storage_class::UniformConstant<
::spirv_std::SampledImage<::spirv_std::Image2d>,
>,
#[spirv(descriptor_set = 1)] iChannel1: ::spirv_std::storage_class::UniformConstant<
::spirv_std::SampledImage<::spirv_std::Image2d>,
>,
#[spirv(descriptor_set = 1)] iChannel2: ::spirv_std::storage_class::UniformConstant<
::spirv_std::SampledImage<::spirv_std::Image2d>,
>,
#[spirv(descriptor_set = 1)] iChannel3: ::spirv_std::storage_class::UniformConstant<
::spirv_std::SampledImage<::spirv_std::Image2d>,
>,
#[spirv(descriptor_set = 1)] iResolution: ::spirv_std::storage_class::UniformConstant<
::spirv_std::glam::Vec3A,
>,
#[spirv(descriptor_set = 1)] iTime: ::spirv_std::storage_class::UniformConstant<f32>,
#[spirv(descriptor_set = 1)] iMouse: ::spirv_std::storage_class::UniformConstant<
::spirv_std::glam::Vec4,
>,
#[spirv(descriptor_set = 1)] iDate: ::spirv_std::storage_class::UniformConstant<
::spirv_std::glam::Vec4,
>,
#[spirv(descriptor_set = 1)] iSampleRate: ::spirv_std::storage_class::UniformConstant<
f32,
>,
#[spirv(descriptor_set = 1)] iFrame: ::spirv_std::storage_class::UniformConstant<i32>,
#[spirv(descriptor_set = 1)] iTimeDelta: ::spirv_std::storage_class::UniformConstant<
f32,
>,
#[spirv(descriptor_set = 1)] iFrameRate: ::spirv_std::storage_class::UniformConstant<
f32,
>,
#[spirv(descriptor_set = 1)] iChannelTime: ::spirv_std::storage_class::UniformConstant<
[f32; 4],
>,
#[spirv(descriptor_set = 1)] iChannelResolution: ::spirv_std::storage_class::UniformConstant<
[::spirv_std::glam::Vec3A; 4],
>,
#[spirv(descriptor_set = 1)] unViewport: ::spirv_std::storage_class::UniformConstant<
::spirv_std::glam::Vec4,
>,
#[spirv(descriptor_set = 1)] unCorners: ::spirv_std::storage_class::UniformConstant<
[::spirv_std::glam::Vec3A; 5],
>,
) {
}
};
}
- Run
rustfmt temp.rs
- Notice it removed the
#[spirv(descriptor_set = 1)]
attribute from theiChannelResolution
arg!
It turns it into this:
// ...
#[spirv(descriptor_set = 1)] iChannelTime: ::spirv_std::storage_class::UniformConstant<
[f32; 4],
>,
iChannelResolution: ::spirv_std::storage_class::UniformConstant<
[::spirv_std::glam::Vec3A; 4],
>,
#[spirv(descriptor_set = 1)] unViewport: ::spirv_std::storage_class::UniformConstant<
::spirv_std::glam::Vec4,
>,
#[spirv(descriptor_set = 1)] unCorners: ::spirv_std::storage_class::UniformConstant<
[::spirv_std::glam::Vec3A; 5],
>,
) {
}
};
}
Expected behavior
Don't remove any attributes.
Meta
- rustfmt version:
rustfmt 1.4.27-nightly (580d826 2020-11-16)
- From where did you install rustfmt?: rustup
- How do you run rustfmt:
rustfmt
Settings:
edition = "2018"
version = "Two"
newline_style = "Unix"
use_small_heuristics = "Max"
hard_tabs = true
merge_imports = true
reorder_impl_items = true
use_field_init_shorthand = true
use_try_shorthand = true
spaces_around_ranges = true
overflow_delimited_expr = true