From d97054847cb159376214d1821384857a68f66c17 Mon Sep 17 00:00:00 2001 From: David Palm Date: Wed, 5 Nov 2025 15:35:32 +0100 Subject: [PATCH 1/3] update toolchain to 2025-11-02 --- crates/rustc_codegen_spirv/build.rs | 4 ++-- rust-toolchain.toml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/crates/rustc_codegen_spirv/build.rs b/crates/rustc_codegen_spirv/build.rs index 4a199352c3..bb6ff18619 100644 --- a/crates/rustc_codegen_spirv/build.rs +++ b/crates/rustc_codegen_spirv/build.rs @@ -19,9 +19,9 @@ use std::{env, fs, mem}; /// `cargo publish`. We need to figure out a way to do this properly, but let's hardcode it for now :/ //const REQUIRED_RUST_TOOLCHAIN: &str = include_str!("../../rust-toolchain.toml"); const REQUIRED_RUST_TOOLCHAIN: &str = r#"[toolchain] -channel = "nightly-2025-10-28" +channel = "nightly-2025-11-02" components = ["rust-src", "rustc-dev", "llvm-tools"] -# commit_hash = adaa838976ff99a4f0661136322f64cb466b58a0"#; +# commit_hash = bd3ac0330018c23b111bbee176f32c377be7b319"#; fn rustc_output(arg: &str) -> Result> { let rustc = env::var("RUSTC").unwrap_or_else(|_| "rustc".into()); diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 853b90472e..b27e9b9dec 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,7 +1,7 @@ [toolchain] -channel = "nightly-2025-10-28" +channel = "nightly-2025-11-02" components = ["rust-src", "rustc-dev", "llvm-tools"] -# commit_hash = adaa838976ff99a4f0661136322f64cb466b58a0 +# commit_hash = bd3ac0330018c23b111bbee176f32c377be7b319 # Whenever changing the nightly channel, update the commit hash above, and # change `REQUIRED_RUST_TOOLCHAIN` in `crates/rustc_codegen_spirv/build.rs` too. From 59288ff453825f99b5069dd028442fc1db756fb4 Mon Sep 17 00:00:00 2001 From: firestar99 Date: Thu, 26 Feb 2026 12:43:22 +0100 Subject: [PATCH 2/3] bless compiletests --- .../subgroup_composite_enum_err.stderr | 13 +++- tests/compiletests/ui/image/gather_err.stderr | 66 ++++++++++++++++--- .../ui/image/query/query_levels_err.stderr | 43 ++++++++++-- .../ui/image/query/query_lod_err.stderr | 43 ++++++++++-- .../ui/image/query/query_size_lod_err.stderr | 43 ++++++++++-- ...mpled_image_rect_query_size_lod_err.stderr | 43 ++++++++++-- .../core/ref/member_ref_arg-broken.stderr | 1 + .../explicit_overlap.stderr | 1 + 8 files changed, 222 insertions(+), 31 deletions(-) diff --git a/tests/compiletests/ui/arch/subgroup/subgroup_composite_enum_err.stderr b/tests/compiletests/ui/arch/subgroup/subgroup_composite_enum_err.stderr index a6aa555235..174b5d911a 100644 --- a/tests/compiletests/ui/arch/subgroup/subgroup_composite_enum_err.stderr +++ b/tests/compiletests/ui/arch/subgroup/subgroup_composite_enum_err.stderr @@ -97,10 +97,17 @@ error[E0277]: the trait bound `WrongFrom: From` is not satisfied LL | #[derive(Copy, Clone, Default, ScalarComposite)] | ^^^^^^^^^^^^^^^ unsatisfied trait bound | - = help: the trait `From` is not implemented for `WrongFrom` - but trait `From` is implemented for it +help: the trait `From` is not implemented for `WrongFrom` + but trait `From` is implemented for it + --> $DIR/subgroup_composite_enum_err.rs: + | +LL | impl From<$repr> for $ident { + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +... +LL | enum_repr_from!(WrongFrom, u32); + | ------------------------------- in this macro invocation = help: for that trait implementation, expected `u32`, found `i32` - = note: this error originates in the derive macro `ScalarComposite` (in Nightly builds, run with -Z macro-backtrace for more info) + = note: this error originates in the derive macro `ScalarComposite` which comes from the expansion of the macro `enum_repr_from` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0277]: the trait bound `i32: From` is not satisfied --> $DIR/subgroup_composite_enum_err.rs: diff --git a/tests/compiletests/ui/image/gather_err.stderr b/tests/compiletests/ui/image/gather_err.stderr index 3bf82adcf3..966acd413f 100644 --- a/tests/compiletests/ui/image/gather_err.stderr +++ b/tests/compiletests/ui/image/gather_err.stderr @@ -4,10 +4,35 @@ error[E0277]: the trait bound `Image: HasGather` is no LL | let r1: glam::Vec4 = image1d.gather(*sampler, 0.0f32, 0); | ^^^^^^ the trait `HasGather` is not implemented for `Image` | - = help: the following other types implement trait `HasGather`: - Image - Image - Image +help: the following other types implement trait `HasGather` + --> $SPIRV_STD_SRC/image.rs:1652:1 + | +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` +... +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` +... +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` note: required by a bound in `Image::::gather` --> $SPIRV_STD_SRC/image.rs:200:15 | @@ -23,10 +48,35 @@ error[E0277]: the trait bound `Image: HasGather` is no LL | let r2: glam::Vec4 = image3d.gather(*sampler, v3, 0); | ^^^^^^ the trait `HasGather` is not implemented for `Image` | - = help: the following other types implement trait `HasGather`: - Image - Image - Image +help: the following other types implement trait `HasGather` + --> $SPIRV_STD_SRC/image.rs:1652:1 + | +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` +... +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` +... +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` note: required by a bound in `Image::::gather` --> $SPIRV_STD_SRC/image.rs:200:15 | diff --git a/tests/compiletests/ui/image/query/query_levels_err.stderr b/tests/compiletests/ui/image/query/query_levels_err.stderr index b3efbe51d9..366003fbf3 100644 --- a/tests/compiletests/ui/image/query/query_levels_err.stderr +++ b/tests/compiletests/ui/image/query/query_levels_err.stderr @@ -4,11 +4,44 @@ error[E0277]: the trait bound `Image: HasQueryLevels` LL | *output = image.query_levels(); | ^^^^^^^^^^^^ the trait `HasQueryLevels` is not implemented for `Image` | - = help: the following other types implement trait `HasQueryLevels`: - Image - Image - Image - Image +help: the following other types implement trait `HasQueryLevels` + --> $SPIRV_STD_SRC/image.rs:1718:1 + | +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` +... +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` +... +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` +... +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` note: required by a bound in `Image::::query_levels` --> $SPIRV_STD_SRC/image.rs:971:15 | diff --git a/tests/compiletests/ui/image/query/query_lod_err.stderr b/tests/compiletests/ui/image/query/query_lod_err.stderr index e9c9f5b1dc..c82125f949 100644 --- a/tests/compiletests/ui/image/query/query_lod_err.stderr +++ b/tests/compiletests/ui/image/query/query_lod_err.stderr @@ -4,11 +4,44 @@ error[E0277]: the trait bound `Image: HasQueryLevels` LL | *output = image.query_lod(*sampler, glam::Vec2::new(0.0, 1.0)); | ^^^^^^^^^ the trait `HasQueryLevels` is not implemented for `Image` | - = help: the following other types implement trait `HasQueryLevels`: - Image - Image - Image - Image +help: the following other types implement trait `HasQueryLevels` + --> $SPIRV_STD_SRC/image.rs:1718:1 + | +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` +... +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` +... +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` +... +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` note: required by a bound in `Image::::query_lod` --> $SPIRV_STD_SRC/image.rs:1001:15 | diff --git a/tests/compiletests/ui/image/query/query_size_lod_err.stderr b/tests/compiletests/ui/image/query/query_size_lod_err.stderr index 1ffc4ed445..2edffece1d 100644 --- a/tests/compiletests/ui/image/query/query_size_lod_err.stderr +++ b/tests/compiletests/ui/image/query/query_size_lod_err.stderr @@ -4,11 +4,44 @@ error[E0277]: the trait bound `Image: HasQuerySizeLod` LL | *output = image.query_size_lod(0); | ^^^^^^^^^^^^^^ the trait `HasQuerySizeLod` is not implemented for `Image` | - = help: the following other types implement trait `HasQuerySizeLod`: - Image - Image - Image - Image +help: the following other types implement trait `HasQuerySizeLod` + --> $SPIRV_STD_SRC/image.rs:2089:1 + | +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` +... +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` +... +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` +... +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` note: required by a bound in `Image::::query_size_lod` --> $SPIRV_STD_SRC/image.rs:1084:15 | diff --git a/tests/compiletests/ui/image/query/sampled_image_rect_query_size_lod_err.stderr b/tests/compiletests/ui/image/query/sampled_image_rect_query_size_lod_err.stderr index dbf8fa7b7d..2f7faa1296 100644 --- a/tests/compiletests/ui/image/query/sampled_image_rect_query_size_lod_err.stderr +++ b/tests/compiletests/ui/image/query/sampled_image_rect_query_size_lod_err.stderr @@ -4,11 +4,44 @@ error[E0277]: the trait bound `Image: HasQuerySizeLod` LL | *output = rect_sampled.query_size_lod(0); | ^^^^^^^^^^^^^^ the trait `HasQuerySizeLod` is not implemented for `Image` | - = help: the following other types implement trait `HasQuerySizeLod`: - Image - Image - Image - Image +help: the following other types implement trait `HasQuerySizeLod` + --> /image.rs:2089:1 + | +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` +... +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` +... +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` +... +LL | / impl< +LL | | SampledType: SampleType, +LL | | const DEPTH: u32, +LL | | const FORMAT: u32, +... | +LL | | COMPONENTS, +LL | | > + | |_____^ `Image` note: required by a bound in `SampledImage::>::query_size_lod` --> /image.rs:1253:12 | diff --git a/tests/compiletests/ui/lang/core/ref/member_ref_arg-broken.stderr b/tests/compiletests/ui/lang/core/ref/member_ref_arg-broken.stderr index 4a41bfb462..c46b2e0276 100644 --- a/tests/compiletests/ui/lang/core/ref/member_ref_arg-broken.stderr +++ b/tests/compiletests/ui/lang/core/ref/member_ref_arg-broken.stderr @@ -36,6 +36,7 @@ LL | fn h_newtyped(xyz: ((&u32, &u32, &u32),)) -> (u32, u32, u32) { error: error:0:0 - OpLoad Pointer '$ID[%$ID]' is not a logical pointer. %39 = OpLoad %uint %38 + | = note: spirv-val failed = note: module `$TEST_BUILD_DIR/lang/core/ref/member_ref_arg-broken` diff --git a/tests/compiletests/ui/spirv-attr/location_assignment/explicit_overlap.stderr b/tests/compiletests/ui/spirv-attr/location_assignment/explicit_overlap.stderr index dbde616b1c..f67db73fd5 100644 --- a/tests/compiletests/ui/spirv-attr/location_assignment/explicit_overlap.stderr +++ b/tests/compiletests/ui/spirv-attr/location_assignment/explicit_overlap.stderr @@ -43,6 +43,7 @@ OpReturn OpFunctionEnd error: error:0:0 - [VUID-StandaloneSpirv-OpEntryPoint-08722] Entry-point has conflicting output location assignment at location 1, component 0 OpEntryPoint Vertex %1 "main" %out1 %out2 + | = note: spirv-val failed = note: module `` From 05a7b6aa5b87c37972730f8a1a6bb7201c43c8a1 Mon Sep 17 00:00:00 2001 From: firestar99 Date: Thu, 26 Feb 2026 14:23:05 +0100 Subject: [PATCH 3/3] adjust clippy lints, rename `empty_enum` to `empty_enums` --- .cargo/config.toml | 2 +- crates/spirv-builder/src/lib.rs | 2 +- crates/spirv-std/macros/src/lib.rs | 2 +- crates/spirv-std/src/lib.rs | 2 +- examples/runners/ash/src/main.rs | 2 +- examples/runners/cpu/src/main.rs | 2 +- examples/runners/wgpu/src/lib.rs | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index 388ac776f1..69ee514ab6 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -32,7 +32,7 @@ rustflags = [ "-Wclippy::dbg_macro", "-Wclippy::debug_assert_with_mut_call", "-Wclippy::doc_markdown", - "-Wclippy::empty_enum", + "-Wclippy::empty_enums", "-Wclippy::enum_glob_use", "-Wclippy::exit", "-Wclippy::expl_impl_clone_on_copy", diff --git a/crates/spirv-builder/src/lib.rs b/crates/spirv-builder/src/lib.rs index b84c70969b..96d1d10bee 100644 --- a/crates/spirv-builder/src/lib.rs +++ b/crates/spirv-builder/src/lib.rs @@ -12,7 +12,7 @@ clippy::dbg_macro, clippy::debug_assert_with_mut_call, clippy::doc_markdown, - clippy::empty_enum, + clippy::empty_enums, clippy::enum_glob_use, clippy::exit, clippy::expl_impl_clone_on_copy, diff --git a/crates/spirv-std/macros/src/lib.rs b/crates/spirv-std/macros/src/lib.rs index 8822d82fb8..b88a1f1725 100644 --- a/crates/spirv-std/macros/src/lib.rs +++ b/crates/spirv-std/macros/src/lib.rs @@ -12,7 +12,7 @@ clippy::dbg_macro, clippy::debug_assert_with_mut_call, clippy::doc_markdown, - clippy::empty_enum, + clippy::empty_enums, clippy::enum_glob_use, clippy::exit, clippy::expl_impl_clone_on_copy, diff --git a/crates/spirv-std/src/lib.rs b/crates/spirv-std/src/lib.rs index 78457b3ad8..c701f8d228 100644 --- a/crates/spirv-std/src/lib.rs +++ b/crates/spirv-std/src/lib.rs @@ -18,7 +18,7 @@ clippy::dbg_macro, clippy::debug_assert_with_mut_call, clippy::doc_markdown, - clippy::empty_enum, + clippy::empty_enums, clippy::enum_glob_use, clippy::exit, clippy::expl_impl_clone_on_copy, diff --git a/examples/runners/ash/src/main.rs b/examples/runners/ash/src/main.rs index 4c479e2074..61c1aaee92 100644 --- a/examples/runners/ash/src/main.rs +++ b/examples/runners/ash/src/main.rs @@ -12,7 +12,7 @@ clippy::dbg_macro, clippy::debug_assert_with_mut_call, clippy::doc_markdown, - clippy::empty_enum, + clippy::empty_enums, clippy::enum_glob_use, clippy::exit, clippy::expl_impl_clone_on_copy, diff --git a/examples/runners/cpu/src/main.rs b/examples/runners/cpu/src/main.rs index 4b4328faa0..4dd1f75c21 100644 --- a/examples/runners/cpu/src/main.rs +++ b/examples/runners/cpu/src/main.rs @@ -12,7 +12,7 @@ clippy::dbg_macro, clippy::debug_assert_with_mut_call, clippy::doc_markdown, - clippy::empty_enum, + clippy::empty_enums, clippy::enum_glob_use, clippy::exit, clippy::expl_impl_clone_on_copy, diff --git a/examples/runners/wgpu/src/lib.rs b/examples/runners/wgpu/src/lib.rs index 3f601b43f1..cb918dfa39 100644 --- a/examples/runners/wgpu/src/lib.rs +++ b/examples/runners/wgpu/src/lib.rs @@ -12,7 +12,7 @@ clippy::dbg_macro, clippy::debug_assert_with_mut_call, clippy::doc_markdown, - clippy::empty_enum, + clippy::empty_enums, clippy::enum_glob_use, clippy::exit, clippy::expl_impl_clone_on_copy,