This repository has been archived on 2026-08-31. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
donglora/vendor/darling/tests/flatten_error_accumulation.rs
T
swaitsandClaude Opus 4.6 3102fc747a feat: add display UI with splash screen, dashboard, and RSSI sparkline
Implement full SSD1306 OLED display support:
- Splash screen on boot (1.5s) with project name, version, board
- Dashboard showing radio state, config, counters, RSSI/SNR
- RSSI history sparkline (64-sample ring buffer, 2px-wide bars)
- DisplayOn/DisplayOff host commands routed via dedicated channel
- Pure render functions against generic DrawTarget (no hardware coupling)
- Display on/off control bypasses radio task entirely

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 20:42:54 -06:00

46 lines
1017 B
Rust

use darling::{util::Flag, Error, FromDeriveInput, FromMeta};
use proc_macro2::Ident;
use syn::parse_quote;
#[derive(FromMeta)]
#[darling(and_then = Self::validate)]
struct Vis {
public: Flag,
private: Flag,
}
impl Vis {
fn validate(self) -> darling::Result<Self> {
if self.public.is_present() && self.private.is_present() {
return Err(Error::custom("Cannot be both public and private"));
}
Ok(self)
}
}
#[derive(FromDeriveInput)]
#[darling(attributes(sample))]
#[allow(dead_code)]
struct Example {
ident: Ident,
label: String,
volume: usize,
#[darling(flatten)]
visibility: Vis,
}
#[test]
fn many_errors() {
let e = Example::from_derive_input(&parse_quote! {
#[sample(volume = 10, public, private)]
struct Demo {}
})
.map(|_| "Should have failed")
.unwrap_err();
// We are expecting an error from the Vis::validate method and an error for the
// missing `label` field.
assert_eq!(e.len(), 2);
}