[Migrated] We should consider using `#[rustc_on_unimplemented]` on `spirv-std` helper traits.
まだ誰も着手していません。
- 主要言語
- Rust
- スター
- 3.4k
- フォーク
- 126
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
Issue automatically imported from old repo: https://github.com/EmbarkStudios/rust-gpu/issues/983
Old labels: t: enhancement
Originally creatd by eddyb on 2023-01-05T12:44:08Z
I was reviewing this nightly bump PR:
And its diff shows some nightly diagnostic improvements of the form:
12 | *output = image.query_levels();
- | ^^^^^ ------------ required by a bound introduced by this call
- | |
- | the trait `HasQueryLevels` is not implemented for `Image<f32, 4, 2, 0, 0, 1, 0>`
+ | ^^^^^^^^^^^^ the trait `HasQueryLevels` is not implemented for `Image<f32, 4, 2, 0, 0, 1, 0>`
|
= help: the following other types implement trait `HasQueryLevels`:
Image<SampledType, 0, DEPTH, ARRAYED, MULTISAMPLED, SAMPLED, FORMAT>
That's definitely better, but the trait can't really explain itself and its connection to the types (i.e. "Image types support query_levels only if such and such parameters have these values" etc.).
Except, in core/std, traits can and very much do do this, using #[rustc_on_unimplemented]!
It's perma-unstable, and there might be efforts to stabilize a subset of it, but even ignoring that, we can still use it under #[cfg_attr(target_arch = "spirv", ...)], just like all the other rustc internals we rely on.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず、query_levels などのメソッドに関係する spirv-std のヘルパートレイト定義を見つけ、次に PR 982 の nightly 診断の変更と、文書化されている rustc_on_unimplemented の動作を確認します。Image のサポートされていないパラメータの組み合わせが、関連するトレイト要件と有効な組み合わせを説明する診断を生成し、かつ属性が SPIR-V ターゲット向けに引き続き gated されていれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- rust
- 領域
- compilers
- issue の種類
- 機能追加
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 活発
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 45/100