mirror of
https://github.com/servo/servo.git
synced 2025-08-03 04:30:10 +01:00
style: Gracefully handle errors creating shared memory UA style sheets.
We still panic in a debug build, so that developers can notice when they need to add a new static atom after modifying UA sheets. We also add telemetry to note when this happens, add an app note to a crash report, in case any crash later on occurs, and re-up the existing, expired shared memory sheet telemetry probes so we can look at them again. Differential Revision: https://phabricator.services.mozilla.com/D73188
This commit is contained in:
parent
709c52fefb
commit
6bae0b99ca
10 changed files with 184 additions and 122 deletions
|
@ -85,9 +85,22 @@ pub fn add_predicate(where_clause: &mut Option<syn::WhereClause>, pred: WherePre
|
|||
.push(pred);
|
||||
}
|
||||
|
||||
pub fn fmap_match<F>(input: &DeriveInput, bind_style: BindStyle, mut f: F) -> TokenStream
|
||||
pub fn fmap_match<F>(input: &DeriveInput, bind_style: BindStyle, f: F) -> TokenStream
|
||||
where
|
||||
F: FnMut(BindingInfo) -> TokenStream,
|
||||
F: FnMut(&BindingInfo) -> TokenStream,
|
||||
{
|
||||
fmap2_match(input, bind_style, f, |_| None)
|
||||
}
|
||||
|
||||
pub fn fmap2_match<F, G>(
|
||||
input: &DeriveInput,
|
||||
bind_style: BindStyle,
|
||||
mut f: F,
|
||||
mut g: G,
|
||||
) -> TokenStream
|
||||
where
|
||||
F: FnMut(&BindingInfo) -> TokenStream,
|
||||
G: FnMut(&BindingInfo) -> Option<TokenStream>,
|
||||
{
|
||||
let mut s = synstructure::Structure::new(input);
|
||||
s.variants_mut().iter_mut().for_each(|v| {
|
||||
|
@ -95,12 +108,20 @@ where
|
|||
});
|
||||
s.each_variant(|variant| {
|
||||
let (mapped, mapped_fields) = value(variant, "mapped");
|
||||
let fields_pairs = variant.bindings().iter().zip(mapped_fields);
|
||||
let fields_pairs = variant.bindings().iter().zip(mapped_fields.iter());
|
||||
let mut computations = quote!();
|
||||
computations.append_all(fields_pairs.map(|(field, mapped_field)| {
|
||||
let expr = f(field.clone());
|
||||
let expr = f(field);
|
||||
quote! { let #mapped_field = #expr; }
|
||||
}));
|
||||
computations.append_all(
|
||||
mapped_fields
|
||||
.iter()
|
||||
.map(|mapped_field| match g(mapped_field) {
|
||||
Some(expr) => quote! { let #mapped_field = #expr; },
|
||||
None => quote!(),
|
||||
}),
|
||||
);
|
||||
computations.append_all(mapped);
|
||||
Some(computations)
|
||||
})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue