Files
Luke SandbergandGitHub 38c4caf22a [turbopack] Don't execute inventory_submit in rust analyzer (#83447)
### What?
In #83074 we changed how turbo task objects were registered to use the `inventory` crate.
This PR adds a new `inventory_submit!` macro that wraps the existing `inventory::submit` function with a `#[cfg(not(rust_analyzer))]` attribute to prevent Rust Analyzer choking on the generated code.

See example error

![image.png](https://app.graphite.dev/user-attachments/assets/2fe87f23-8717-4615-a86d-94c1b19ae099.png)

Because the inventory code does not affect any API surfaces this is safe and if anything should improve rust-analyzer performance
2025-09-04 13:31:50 -07:00

43 lines
751 B
Rust

#![feature(arbitrary_self_types)]
#![feature(arbitrary_self_types_pointers)]
#![allow(unexpected_cfgs)]
use turbo_tasks::Vc;
#[turbo_tasks::value_trait]
trait MyTrait {
fn item(&self) -> bool;
#[turbo_tasks::function]
fn item2(&self) -> Vc<bool>;
#[turbo_tasks::function]
fn item3(&self) -> Vc<bool>;
}
#[turbo_tasks::value]
struct MyStruct;
#[turbo_tasks::value_impl]
impl MyTrait for MyStruct {
fn item(&self) -> bool {
true
}
#[turbo_tasks::function]
fn item2(&self) -> Vc<bool> {
Vc::cell(true)
}
#[turbo_tasks::function]
fn item3(&self) -> Vc<bool> {
Vc::cell(true)
}
}
fn expects_my_trait(_x: impl MyTrait) {}
fn main() {
expects_my_trait(MyStruct {});
}