Skip to content

Commit

Permalink
Add tests that ensures that error reported for a path for with and …
Browse files Browse the repository at this point in the history
…`default` attributes
  • Loading branch information
Mingun committed Jul 23, 2024
1 parent 21c7fd1 commit f6d7e8f
Show file tree
Hide file tree
Showing 16 changed files with 501 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
//! Ensures that error message points to the path in attribute
use serde_derive::Deserialize;

#[derive(Deserialize)]
#[serde(tag = "tag", content = "content")]
enum Enum {
// Newtype variants does not use the provided path, so it is forbidden here
// Newtype(#[serde(default = "main")] u8),
Tuple(
u8,
#[serde(default = "main")] i8,
),
Struct {
#[serde(default = "main")]
f1: u8,
f2: u8,
#[serde(default = "main")]
f3: i8,
},
}

fn main() {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
error[E0308]: `match` arms have incompatible types
--> tests/ui/default-attribute/incorrect_type_enum_adjacently_tagged.rs:11:27
|
4 | #[derive(Deserialize)]
| -----------
| |
| this is found to be of type `i8`
| `match` arms have incompatible types
...
11 | #[serde(default = "main")] i8,
| ^^^^^^ expected `i8`, found `()`

error[E0308]: `match` arms have incompatible types
--> tests/ui/default-attribute/incorrect_type_enum_adjacently_tagged.rs:14:27
|
4 | #[derive(Deserialize)]
| -----------
| |
| this is found to be of type `u8`
| `match` arms have incompatible types
...
14 | #[serde(default = "main")]
| ^^^^^^ expected `u8`, found `()`

error[E0308]: `match` arms have incompatible types
--> tests/ui/default-attribute/incorrect_type_enum_adjacently_tagged.rs:17:27
|
4 | #[derive(Deserialize)]
| -----------
| |
| this is found to be of type `i8`
| `match` arms have incompatible types
...
17 | #[serde(default = "main")]
| ^^^^^^ expected `i8`, found `()`
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
//! Ensures that error message points to the path in attribute
use serde_derive::Deserialize;

#[derive(Deserialize)]
enum Enum {
// Newtype variants does not use the provided path, so it is forbidden here
// Newtype(#[serde(default = "main")] u8),
Tuple(
u8,
#[serde(default = "main")] i8,
),
Struct {
#[serde(default = "main")]
f1: u8,
f2: u8,
#[serde(default = "main")]
f3: i8,
},
}

fn main() {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
error[E0308]: `match` arms have incompatible types
--> tests/ui/default-attribute/incorrect_type_enum_externally_tagged.rs:10:27
|
4 | #[derive(Deserialize)]
| -----------
| |
| this is found to be of type `i8`
| `match` arms have incompatible types
...
10 | #[serde(default = "main")] i8,
| ^^^^^^ expected `i8`, found `()`

error[E0308]: `match` arms have incompatible types
--> tests/ui/default-attribute/incorrect_type_enum_externally_tagged.rs:13:27
|
4 | #[derive(Deserialize)]
| -----------
| |
| this is found to be of type `u8`
| `match` arms have incompatible types
...
13 | #[serde(default = "main")]
| ^^^^^^ expected `u8`, found `()`

error[E0308]: `match` arms have incompatible types
--> tests/ui/default-attribute/incorrect_type_enum_externally_tagged.rs:16:27
|
4 | #[derive(Deserialize)]
| -----------
| |
| this is found to be of type `i8`
| `match` arms have incompatible types
...
16 | #[serde(default = "main")]
| ^^^^^^ expected `i8`, found `()`
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
//! Ensures that error message points to the path in attribute
use serde_derive::Deserialize;

#[derive(Deserialize)]
#[serde(tag = "tag")]
enum Enum {
// Newtype variants does not use the provided path, so it is forbidden here
// Newtype(#[serde(default = "main")] u8),
// Tuple variants does not supported in internally tagged enums
Struct {
#[serde(default = "main")]
f1: u8,
f2: u8,
#[serde(default = "main")]
f3: i8,
},
}

fn main() {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
error[E0308]: `match` arms have incompatible types
--> tests/ui/default-attribute/incorrect_type_enum_internally_tagged.rs:11:27
|
4 | #[derive(Deserialize)]
| -----------
| |
| this is found to be of type `u8`
| `match` arms have incompatible types
...
11 | #[serde(default = "main")]
| ^^^^^^ expected `u8`, found `()`

error[E0308]: `match` arms have incompatible types
--> tests/ui/default-attribute/incorrect_type_enum_internally_tagged.rs:14:27
|
4 | #[derive(Deserialize)]
| -----------
| |
| this is found to be of type `i8`
| `match` arms have incompatible types
...
14 | #[serde(default = "main")]
| ^^^^^^ expected `i8`, found `()`
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
//! Ensures that error message points to the path in attribute
use serde_derive::Deserialize;

#[derive(Deserialize)]
#[serde(untagged)]
enum Enum {
// Newtype variants does not use the provided path, so it is forbidden here
// Newtype(#[serde(default = "main")] u8),
Tuple(
u8,
#[serde(default = "main")] i8,
),
Struct {
#[serde(default = "main")]
f1: u8,
f2: u8,
#[serde(default = "main")]
f3: i8,
},
}

fn main() {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
error[E0308]: `match` arms have incompatible types
--> tests/ui/default-attribute/incorrect_type_enum_untagged.rs:11:27
|
4 | #[derive(Deserialize)]
| -----------
| |
| this is found to be of type `i8`
| `match` arms have incompatible types
...
11 | #[serde(default = "main")] i8,
| ^^^^^^ expected `i8`, found `()`

error[E0308]: `match` arms have incompatible types
--> tests/ui/default-attribute/incorrect_type_enum_untagged.rs:14:27
|
4 | #[derive(Deserialize)]
| -----------
| |
| this is found to be of type `u8`
| `match` arms have incompatible types
...
14 | #[serde(default = "main")]
| ^^^^^^ expected `u8`, found `()`

error[E0308]: `match` arms have incompatible types
--> tests/ui/default-attribute/incorrect_type_enum_untagged.rs:17:27
|
4 | #[derive(Deserialize)]
| -----------
| |
| this is found to be of type `i8`
| `match` arms have incompatible types
...
17 | #[serde(default = "main")]
| ^^^^^^ expected `i8`, found `()`
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
//! Ensures that error message points to the path in attribute
use serde_derive::Deserialize;

#[derive(Deserialize)]
#[serde(default = "main")]
struct Newtype(#[serde(default = "main")] u8);

fn main() {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
error[E0308]: mismatched types
--> tests/ui/default-attribute/incorrect_type_newtype.rs:5:19
|
5 | #[serde(default = "main")]
| ^^^^^^
| |
| expected `Newtype`, found `()`
| expected due to this

error[E0308]: `match` arms have incompatible types
--> tests/ui/default-attribute/incorrect_type_newtype.rs:6:34
|
4 | #[derive(Deserialize)]
| -----------
| |
| this is found to be of type `u8`
| `match` arms have incompatible types
5 | #[serde(default = "main")]
6 | struct Newtype(#[serde(default = "main")] u8);
| ^^^^^^ expected `u8`, found `()`

error[E0308]: mismatched types
--> tests/ui/default-attribute/incorrect_type_newtype.rs:5:19
|
5 | #[serde(default = "main")]
| ^^^^^^ expected `Newtype`, found `()`
6 | struct Newtype(#[serde(default = "main")] u8);
| ------- expected due to this

error[E0308]: mismatched types
--> tests/ui/default-attribute/incorrect_type_newtype.rs:6:34
|
4 | #[derive(Deserialize)]
| ----------- expected due to the type of this binding
5 | #[serde(default = "main")]
6 | struct Newtype(#[serde(default = "main")] u8);
| ^^^^^^ expected `u8`, found `()`
14 changes: 14 additions & 0 deletions test_suite/tests/ui/default-attribute/incorrect_type_struct.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
//! Ensures that error message points to the path in attribute
use serde_derive::Deserialize;

#[derive(Deserialize)]
#[serde(default = "main")]
struct Struct {
#[serde(default = "main")]
f1: u8,
f2: u8,
#[serde(default = "main")]
f3: i8,
}

fn main() {}
58 changes: 58 additions & 0 deletions test_suite/tests/ui/default-attribute/incorrect_type_struct.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
error[E0308]: mismatched types
--> tests/ui/default-attribute/incorrect_type_struct.rs:5:19
|
5 | #[serde(default = "main")]
| ^^^^^^
| |
| expected `Struct`, found `()`
| expected due to this

error[E0308]: `match` arms have incompatible types
--> tests/ui/default-attribute/incorrect_type_struct.rs:7:23
|
4 | #[derive(Deserialize)]
| -----------
| |
| this is found to be of type `u8`
| `match` arms have incompatible types
...
7 | #[serde(default = "main")]
| ^^^^^^ expected `u8`, found `()`

error[E0308]: `match` arms have incompatible types
--> tests/ui/default-attribute/incorrect_type_struct.rs:10:23
|
4 | #[derive(Deserialize)]
| -----------
| |
| this is found to be of type `i8`
| `match` arms have incompatible types
...
10 | #[serde(default = "main")]
| ^^^^^^ expected `i8`, found `()`

error[E0308]: mismatched types
--> tests/ui/default-attribute/incorrect_type_struct.rs:5:19
|
5 | #[serde(default = "main")]
| ^^^^^^ expected `Struct`, found `()`
6 | struct Struct {
| ------ expected due to this

error[E0308]: mismatched types
--> tests/ui/default-attribute/incorrect_type_struct.rs:7:23
|
4 | #[derive(Deserialize)]
| ----------- expected due to the type of this binding
...
7 | #[serde(default = "main")]
| ^^^^^^ expected `u8`, found `()`

error[E0308]: mismatched types
--> tests/ui/default-attribute/incorrect_type_struct.rs:10:23
|
4 | #[derive(Deserialize)]
| ----------- expected due to the type of this binding
...
10 | #[serde(default = "main")]
| ^^^^^^ expected `i8`, found `()`
11 changes: 11 additions & 0 deletions test_suite/tests/ui/default-attribute/incorrect_type_tuple.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
//! Ensures that error message points to the path in attribute
use serde_derive::Deserialize;

#[derive(Deserialize)]
#[serde(default = "main")]
struct Tuple(
u8,
#[serde(default = "main")] i8,
);

fn main() {}
37 changes: 37 additions & 0 deletions test_suite/tests/ui/default-attribute/incorrect_type_tuple.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
error[E0308]: mismatched types
--> tests/ui/default-attribute/incorrect_type_tuple.rs:5:19
|
5 | #[serde(default = "main")]
| ^^^^^^
| |
| expected `Tuple`, found `()`
| expected due to this

error[E0308]: `match` arms have incompatible types
--> tests/ui/default-attribute/incorrect_type_tuple.rs:8:23
|
4 | #[derive(Deserialize)]
| -----------
| |
| this is found to be of type `i8`
| `match` arms have incompatible types
...
8 | #[serde(default = "main")] i8,
| ^^^^^^ expected `i8`, found `()`

error[E0308]: mismatched types
--> tests/ui/default-attribute/incorrect_type_tuple.rs:5:19
|
5 | #[serde(default = "main")]
| ^^^^^^ expected `Tuple`, found `()`
6 | struct Tuple(
| ----- expected due to this

error[E0308]: mismatched types
--> tests/ui/default-attribute/incorrect_type_tuple.rs:8:23
|
4 | #[derive(Deserialize)]
| ----------- expected due to the type of this binding
...
8 | #[serde(default = "main")] i8,
| ^^^^^^ expected `i8`, found `()`
Loading

0 comments on commit f6d7e8f

Please sign in to comment.