Skip to content

Commit da96fd4

Browse files
Add error message to derive macro
1 parent 8373c70 commit da96fd4

1 file changed

Lines changed: 7 additions & 3 deletions

File tree

oneapi-rs-derive/src/lib.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
use proc_macro::TokenStream;
22
use quote::{format_ident, quote};
33
use syn::{
4-
Data, DataStruct, DeriveInput, Field, LitInt, WhereClause, parse_macro_input, parse_quote,
4+
Data, DataStruct, DeriveInput, Error, Field, LitInt, WhereClause, parse_macro_input,
5+
parse_quote,
56
};
67

78
#[proc_macro_derive(KernelArgumentList)]
89
pub fn derive_kernel_argument_list(input: TokenStream) -> TokenStream {
910
let mut input = parse_macro_input!(input as DeriveInput);
1011

1112
let Data::Struct(data) = &input.data else {
12-
panic!()
13+
return Error::new_spanned(input, "This derive macro only works on structs.")
14+
.into_compile_error()
15+
.into();
1316
};
1417
expand_where_clause(input.generics.make_where_clause(), data);
1518
let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl();
@@ -19,7 +22,8 @@ pub fn derive_kernel_argument_list(input: TokenStream) -> TokenStream {
1922
let members = data.fields.members();
2023

2124
let expanded = quote! {
22-
unsafe impl #impl_generics oneapi_rs::kernel::KernelArgumentList<#argc> for #ident #ty_generics #where_clause {
25+
unsafe impl #impl_generics oneapi_rs::kernel::KernelArgumentList<#argc>
26+
for #ident #ty_generics #where_clause {
2327
unsafe fn as_raw_arg_list(&self) -> [&[u8]; #argc] {
2428
[ #(unsafe { self.#members.as_raw_arg() }),* ]
2529
}

0 commit comments

Comments
 (0)