diff --git a/crates/bevy_reflect_compile_fail_tests/tests/field_attributes.rs b/crates/bevy_reflect_compile_fail_tests/tests/field_attributes.rs new file mode 100644 index 0000000000000..175614e4f41cd --- /dev/null +++ b/crates/bevy_reflect_compile_fail_tests/tests/field_attributes.rs @@ -0,0 +1,6 @@ +#[test] +fn test() { + let t = trybuild::TestCases::new(); + t.compile_fail("tests/field_attributes/*.fail.rs"); + t.pass("tests/field_attributes/*.pass.rs"); +} diff --git a/crates/bevy_reflect_compile_fail_tests/tests/field_attributes/ignored_order.fail.rs b/crates/bevy_reflect_compile_fail_tests/tests/field_attributes/ignored_order.fail.rs new file mode 100644 index 0000000000000..b76072d683e04 --- /dev/null +++ b/crates/bevy_reflect_compile_fail_tests/tests/field_attributes/ignored_order.fail.rs @@ -0,0 +1,10 @@ +use bevy_reflect::Reflect; + +#[derive(Reflect)] +struct Foo { + #[reflect(ignore)] + a: i32, + b: i32, +} + +fn main() {} diff --git a/crates/bevy_reflect_compile_fail_tests/tests/field_attributes/ignored_order.fail.stderr b/crates/bevy_reflect_compile_fail_tests/tests/field_attributes/ignored_order.fail.stderr new file mode 100644 index 0000000000000..839c775c9f8ac --- /dev/null +++ b/crates/bevy_reflect_compile_fail_tests/tests/field_attributes/ignored_order.fail.stderr @@ -0,0 +1,5 @@ +error: fields marked with `#[reflect(ignore)]` must come last in type definition + --> tests/field_attributes/ignored_order.fail.rs:5:15 + | +5 | #[reflect(ignore)] + | ^^^^^^ diff --git a/crates/bevy_reflect_compile_fail_tests/tests/field_attributes/ignored_order.pass.rs b/crates/bevy_reflect_compile_fail_tests/tests/field_attributes/ignored_order.pass.rs new file mode 100644 index 0000000000000..a83b3125ae480 --- /dev/null +++ b/crates/bevy_reflect_compile_fail_tests/tests/field_attributes/ignored_order.pass.rs @@ -0,0 +1,10 @@ +use bevy_reflect::Reflect; + +#[derive(Reflect)] +struct Foo { + a: i32, + #[reflect(ignore)] + b: i32, +} + +fn main() {} diff --git a/crates/bevy_reflect_compile_fail_tests/tests/field_attributes/skipped_order.fail.rs b/crates/bevy_reflect_compile_fail_tests/tests/field_attributes/skipped_order.fail.rs new file mode 100644 index 0000000000000..2ebd3427dab4b --- /dev/null +++ b/crates/bevy_reflect_compile_fail_tests/tests/field_attributes/skipped_order.fail.rs @@ -0,0 +1,19 @@ +use bevy_reflect::Reflect; + +#[derive(Reflect)] +struct Foo { + #[reflect(skip_serializing)] + a: i32, + b: i32, +} + +#[derive(Reflect)] +struct Bar { + a: i32, + #[reflect(ignore)] + b: i32, + #[reflect(skip_serializing)] + c: i32, +} + +fn main() {} diff --git a/crates/bevy_reflect_compile_fail_tests/tests/field_attributes/skipped_order.fail.stderr b/crates/bevy_reflect_compile_fail_tests/tests/field_attributes/skipped_order.fail.stderr new file mode 100644 index 0000000000000..3f84931cf54cc --- /dev/null +++ b/crates/bevy_reflect_compile_fail_tests/tests/field_attributes/skipped_order.fail.stderr @@ -0,0 +1,11 @@ +error: fields marked with `#[reflect(skip_serializing)]` must come last in type definition (but before any fields marked `#[reflect(ignore)]`) + --> tests/field_attributes/skipped_order.fail.rs:5:15 + | +5 | #[reflect(skip_serializing)] + | ^^^^^^^^^^^^^^^^ + +error: fields marked with `#[reflect(ignore)]` must come last in type definition + --> tests/field_attributes/skipped_order.fail.rs:13:15 + | +13 | #[reflect(ignore)] + | ^^^^^^ diff --git a/crates/bevy_reflect_compile_fail_tests/tests/field_attributes/skipped_order.pass.rs b/crates/bevy_reflect_compile_fail_tests/tests/field_attributes/skipped_order.pass.rs new file mode 100644 index 0000000000000..14e33c1cb59a2 --- /dev/null +++ b/crates/bevy_reflect_compile_fail_tests/tests/field_attributes/skipped_order.pass.rs @@ -0,0 +1,19 @@ +use bevy_reflect::Reflect; + +#[derive(Reflect)] +struct Foo { + a: i32, + #[reflect(skip_serializing)] + b: i32, +} + +#[derive(Reflect)] +struct Bar { + a: i32, + #[reflect(skip_serializing)] + b: i32, + #[reflect(ignore)] + c: i32, +} + +fn main() {}