bevyengine/bevy · error · syn::Error

a #[type_path = "..."] attribute must be specified when usin

Error message

a #[type_path = "..."] attribute must be specified when using {provenance}

What it means

Compile-time error from the Reflect derive macro (impl_remote_type provenance): when deriving reflect impls for a remote type, a #[type_path = "..."] attribute is mandatory because the macro cannot infer the type's path. Add the attribute specifying the remote type's full path.

Source

Thrown at crates/bevy_reflect/derive/src/derive_data.rs:281

                    format!("cannot use `#[{TYPE_NAME_ATTRIBUTE_NAME} = \"...\"]` without a `#[{TYPE_PATH_ATTRIBUTE_NAME} = \"...\"]` attribute."),
                ));
            }
            _ => (),
        }

        let type_path = ReflectTypePath::Internal {
            ident: &input.ident,
            custom_path,
            generics: &input.generics,
        };

        let meta = ReflectMeta::new(type_path, container_attributes);

        if provenance.source == ReflectImplSource::ImplRemoteType
            && meta.type_path_attrs().should_auto_derive()
            && !meta.type_path().has_custom_path()
        {
            return Err(syn::Error::new(
                meta.type_path().span(),
                format!("a #[{TYPE_PATH_ATTRIBUTE_NAME} = \"...\"] attribute must be specified when using {provenance}"),
            ));
        }

        #[cfg(feature = "reflect_documentation")]
        let meta = meta.with_docs(doc);

        if meta.attrs().is_opaque() {
            return Ok(Self::Opaque(meta));
        }

        match &input.data {
            Data::Struct(data) => {
                let fields = Self::collect_struct_fields(&data.fields)?;
                let serialization_data =
                    SerializationDataDef::new(&fields, &meta.bevy_reflect_path)?;
                let reflect_struct = ReflectStruct {

View on GitHub (pinned to 396ca72708)

Solutions

  1. Add the required #[type_path = "..."] attribute to the type
  2. Use a provenance that does not require a custom type path
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/bevy_reflect/derive/src/derive_data.rs:281 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of bevyengine/bevy@396ca72708 (2026-08-20). Data as JSON: /api/errors/365e3bbad2b5e306. Report an issue: GitHub.