diff --git a/diesel_compile_tests/Cargo.lock b/diesel_compile_tests/Cargo.lock index f0856d0eee0b..0628ac40c042 100644 --- a/diesel_compile_tests/Cargo.lock +++ b/diesel_compile_tests/Cargo.lock @@ -137,6 +137,7 @@ dependencies = [ "byteorder", "chrono", "diesel_derives", + "downcast-rs", "ipnetwork", "itoa", "libc", @@ -180,6 +181,12 @@ dependencies = [ "syn", ] +[[package]] +name = "downcast-rs" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" + [[package]] name = "dsl_auto_type" version = "0.1.0" diff --git a/diesel_compile_tests/tests/fail/derive/embed_and_serialize_as_cannot_be_mixed.rs b/diesel_compile_tests/tests/fail/derive/embed_and_serialize_as_cannot_be_mixed.rs index 20cdcba7a17e..e0e3d2367c6f 100644 --- a/diesel_compile_tests/tests/fail/derive/embed_and_serialize_as_cannot_be_mixed.rs +++ b/diesel_compile_tests/tests/fail/derive/embed_and_serialize_as_cannot_be_mixed.rs @@ -9,7 +9,7 @@ table! { } } -#[derive(Insertable)] +#[derive(Insertable, AsChangeset)] #[diesel(table_name = users)] struct NameAndHairColor<'a> { name: &'a str, @@ -24,4 +24,13 @@ struct User<'a> { name_and_hair_color: NameAndHairColor<'a>, } +#[derive(AsChangeset)] +#[diesel(table_name = users)] +struct UserChangeSet<'a> { + id: i32, + #[diesel(embed, serialize_as = SomeType)] + // to test the compile error, this type doesn't need to exist + name_and_hair_color: NameAndHairColor<'a>, +} + fn main() {} diff --git a/diesel_compile_tests/tests/fail/derive/embed_and_serialize_as_cannot_be_mixed.stderr b/diesel_compile_tests/tests/fail/derive/embed_and_serialize_as_cannot_be_mixed.stderr index 566e1261a3b2..9897376307b3 100644 --- a/diesel_compile_tests/tests/fail/derive/embed_and_serialize_as_cannot_be_mixed.stderr +++ b/diesel_compile_tests/tests/fail/derive/embed_and_serialize_as_cannot_be_mixed.stderr @@ -3,3 +3,9 @@ error: `#[diesel(embed)]` cannot be combined with `#[diesel(serialize_as)]` | 22 | #[diesel(embed, serialize_as = SomeType)] | ^^^^^^ + +error: `#[diesel(embed)]` cannot be combined with `#[diesel(serialize_as)]` + --> tests/fail/derive/embed_and_serialize_as_cannot_be_mixed.rs:31:7 + | +31 | #[diesel(embed, serialize_as = SomeType)] + | ^^^^^^