Initial conversion to const generics (#1018)
This commit is contained in:
@@ -62,6 +62,7 @@ pub fn assert_instr(
|
||||
);
|
||||
let mut inputs = Vec::new();
|
||||
let mut input_vals = Vec::new();
|
||||
let mut const_vals = Vec::new();
|
||||
let ret = &func.sig.output;
|
||||
for arg in func.sig.inputs.iter() {
|
||||
let capture = match *arg {
|
||||
@@ -82,6 +83,20 @@ pub fn assert_instr(
|
||||
input_vals.push(quote! { #ident });
|
||||
}
|
||||
}
|
||||
for arg in func.sig.generics.params.iter() {
|
||||
let c = match *arg {
|
||||
syn::GenericParam::Const(ref c) => c,
|
||||
ref v => panic!(
|
||||
"only const generics are allowed: `{:?}`",
|
||||
v.clone().into_token_stream()
|
||||
),
|
||||
};
|
||||
if let Some(&(_, ref tokens)) = invoc.args.iter().find(|a| c.ident == a.0) {
|
||||
const_vals.push(quote! { #tokens });
|
||||
} else {
|
||||
panic!("const generics must have a value for tests");
|
||||
}
|
||||
}
|
||||
|
||||
let attrs = func
|
||||
.attrs
|
||||
@@ -133,7 +148,7 @@ pub fn assert_instr(
|
||||
std::mem::transmute(#shim_name_str.as_bytes().as_ptr()),
|
||||
std::sync::atomic::Ordering::Relaxed,
|
||||
);
|
||||
#name(#(#input_vals),*)
|
||||
#name::<#(#const_vals),*>(#(#input_vals),*)
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user