Closed
Description
I have a proprietary code base that contains a GraphQL backend using async-graphql #[Object]
macros on top code that uses sqlx compile-time query validation. If the query validation doesn't work correctly, I get a large amount of extra spew from the compiler.
Current output
error[E0063]: missing field `staff` in initializer of `UserRow`
--> epoxide/src/graphql/feed.rs:51:33
|
51 | Some(User::from(UserRow {
| ^^^^^^^ missing `staff`
(the actual problem, and then...)
error: cannot check whether the hidden type of opaque type satisfies auto traits
--> epoxide/src/graphql/site/mutations.rs:1365:1
|
1365 | #[Object]
| ^^^^^^^^^
|
note: opaque type is declared here
--> epoxide/src/graphql/viewer.rs:202:56
|
202 | pub(super) async fn from_id(id: i64, app: &App) -> Option<Self> {
| ^^^^^^^^^^^^
note: this item depends on auto traits of the hidden type, but may also be registering the hidden type. This is not supported right now. You can try moving the opaque type and the item that actually registers a hidden type into a new submodule
--> epoxide/src/graphql/site/mutations.rs:1365:1
|
1365 | #[Object]
| ^^^^^^^^^
= note: required because it captures the following types: `ResumeTy`, `Follow`, `&Follow`, `i64`, `&ContextBase<'_, &Positioned<Field>>`, `&App`, `&Arc<App>`, `impl Future<Output = Option<User>>`, `()`
note: required because it's used within this `async` block
--> epoxide/src/graphql/site/mutations.rs:1365:1
|
1365 | #[Object]
| ^^^^^^^^^
= note: required because it captures the following types: `ResumeTy`, `&Follow`, `&ContextBase<'_, &Positioned<Field>>`, `[async block@epoxide/src/graphql/site/mutations.rs:1365:1: 1365:10]`, `()`
note: required because it's used within this `async fn` body
--> epoxide/src/graphql/site/mutations.rs:1365:1
|
1365 | #[Object]
| ^^^^^^^^^
= note: required because it captures the following types: `ResumeTy`, `&Follow`, `&ContextBase<'life2, &Positioned<Field>>`, `&ContextBase<'life2, &Positioned<Field>>`, `impl Future<Output = Result<Option<User>, Error>>`, `()`
note: required because it's used within this `async` block
--> epoxide/src/graphql/site/mutations.rs:1365:1
|
1365 | #[Object]
| ^^^^^^^^^
= note: required because it captures the following types: `ResumeTy`, `&Follow`, `bool`, `[async block@epoxide/src/graphql/site/mutations.rs:1365:1: 1365:10]`, `()`, `Option<User>`, `ContextBase<'_, &Positioned<SelectionSet>>`, `&Option<User>`, `&Option<User>`, `&ContextBase<'_, &Positioned<SelectionSet>>`, `&ContextBase<'_, &Positioned<SelectionSet>>`, `ContextBase<'life2, &Positioned<Field>>`, `&ContextBase<'life2, &Positioned<Field>>`, `&Positioned<Field>`, `&Positioned<Field>`, `Pin<Box<dyn Future<Output = Result<Value, ServerError>> + Send>>`, `Pin<Box<dyn Future<Output = Result<Value, ServerError>> + Send>>`, `[async block@epoxide/src/graphql/site/mutations.rs:1365:1: 1365:10]`, `Option<Site>`, `&Option<Site>`, `&Option<Site>`, `[async block@epoxide/src/graphql/site/mutations.rs:1365:1: 1365:10]`, `Option<bool>`, `&Option<bool>`, `&Option<bool>`
note: required because it's used within this `async` block
--> epoxide/src/graphql/site/mutations.rs:1365:1
|
1365 | #[Object]
| ^^^^^^^^^
= note: required for the cast from `Pin<Box<[async block@epoxide/src/graphql/site/mutations.rs:1365:1: 1365:10]>>` to `Pin<Box<dyn Future<Output = Result<Option<Value>, ServerError>> + Send>>`
= note: the full name for the target type has been written to '/Users/djc/src/bolt/rust/domains/target/debug/deps/epoxide-e30fab28d4badf93.long-type-5277155311423037496.txt'
= note: this error originates in the attribute macro `Object` (in Nightly builds, run with -Z macro-backtrace for more info)
(Repeated multiple times.)
Desired output
Only the first, actionable, error.
Rationale and extra context
This seems to be a regression from 1.71 to 1.72.