
This pr uses the `extern crate self as` trick to make proc macros behave the same way inside and outside bevy. # Objective - Removes noise introduced by `crate as` in the whole bevy repo. - Fixes #17004. - Hardens proc macro path resolution. ## TODO - [x] `BevyManifest` needs cleanup. - [x] Cleanup remaining `crate as`. - [x] Add proper integration tests to the ci. ## Notes - `cargo-manifest-proc-macros` is written by me and based/inspired by the old `BevyManifest` implementation and [`bkchr/proc-macro-crate`](https://github.com/bkchr/proc-macro-crate). - What do you think about the new integration test machinery I added to the `ci`? More and better integration tests can be added at a later stage. The goal of these integration tests is to simulate an actual separate crate that uses bevy. Ideally they would lightly touch all bevy crates. ## Testing - Needs RA test - Needs testing from other users - Others need to run at least `cargo run -p ci integration-test` and verify that they work. --------- Co-authored-by: Alice Cecile <alice.i.cecile@gmail.com>
34 lines
924 B
Rust
34 lines
924 B
Rust
use crate::{std_traits::ReflectDefault, ReflectDeserialize, ReflectSerialize};
|
|
use bevy_reflect_derive::impl_reflect_opaque;
|
|
|
|
impl_reflect_opaque!(::smol_str::SmolStr(
|
|
Debug,
|
|
Hash,
|
|
PartialEq,
|
|
Default,
|
|
Serialize,
|
|
Deserialize,
|
|
));
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use crate::{FromReflect, PartialReflect};
|
|
use smol_str::SmolStr;
|
|
|
|
#[test]
|
|
fn should_partial_eq_smolstr() {
|
|
let a: &dyn PartialReflect = &SmolStr::new("A");
|
|
let a2: &dyn PartialReflect = &SmolStr::new("A");
|
|
let b: &dyn PartialReflect = &SmolStr::new("B");
|
|
assert_eq!(Some(true), a.reflect_partial_eq(a2));
|
|
assert_eq!(Some(false), a.reflect_partial_eq(b));
|
|
}
|
|
|
|
#[test]
|
|
fn smolstr_should_from_reflect() {
|
|
let smolstr = SmolStr::new("hello_world.rs");
|
|
let output = <SmolStr as FromReflect>::from_reflect(&smolstr);
|
|
assert_eq!(Some(smolstr), output);
|
|
}
|
|
}
|