When we expand custom #[derive]s and attribute macros, we seem to ignore their errors.
Interestingly, if you do this:
serde::Deserialize!(struct S {
#[serde(asd)]
fld: u8,
});
...then the error shows up only if the invocation is inside a function body, not when it's in item position. (of course, the fact that you can call a custom derive like that is itself a bug)