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_from_field.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

85 lines
2.0 KiB
Rust

use darling::{ast, util::Ignored, FromDeriveInput, FromField, FromMeta};
use proc_macro2::{Ident, Span};
use syn::parse_quote;
#[derive(FromMeta)]
struct Vis {
#[darling(default)]
public: bool,
#[darling(default)]
private: bool,
}
#[derive(FromField)]
#[darling(attributes(v))]
struct Field {
ident: Option<Ident>,
example: Option<String>,
#[darling(flatten)]
visibility: Vis,
}
#[derive(FromDeriveInput)]
#[darling(attributes(v))]
struct Input {
data: ast::Data<Ignored, Field>,
}
#[test]
fn field_flattens() {
let di = Input::from_derive_input(&parse_quote! {
struct Demo {
#[v(public, example = "world")]
hello: String
}
})
.unwrap();
let fields = di.data.take_struct().unwrap();
let first_field = fields.into_iter().next().unwrap();
assert_eq!(
first_field.ident,
Some(Ident::new("hello", Span::call_site()))
);
assert!(first_field.visibility.public);
assert!(!first_field.visibility.private);
assert_eq!(first_field.example.unwrap(), "world");
}
#[test]
fn field_flattens_with_no_field_level_attributes() {
let di = Input::from_derive_input(&parse_quote! {
struct Demo {
hello: String
}
})
.unwrap();
let fields = di.data.take_struct().unwrap();
let first_field = fields.into_iter().next().unwrap();
assert_eq!(
first_field.ident,
Some(Ident::new("hello", Span::call_site()))
);
assert!(!first_field.visibility.public);
assert!(!first_field.visibility.private);
assert_eq!(first_field.example, None);
}
#[test]
fn field_flattens_across_attributes() {
let di = Input::from_derive_input(&parse_quote! {
struct Demo {
#[v(public)]
#[v(private)]
hello: String
}
})
.unwrap();
let fields = di.data.take_struct().unwrap();
let first_field = fields.into_iter().next().unwrap();
assert!(first_field.visibility.public);
assert!(first_field.visibility.private);
}