Improve diagnostics for non-clonable return types
This commit is contained in:
@@ -314,15 +314,17 @@ impl ExportedFn {
|
||||
})
|
||||
.collect();
|
||||
|
||||
let return_span = self.return_type().map(|r| r.span())
|
||||
.unwrap_or_else(|| proc_macro2::Span::call_site());
|
||||
if !self.params.return_raw {
|
||||
quote! {
|
||||
quote_spanned! { return_span=>
|
||||
type EvalBox = Box<EvalAltResult>;
|
||||
pub #dynamic_signature {
|
||||
Ok(Dynamic::from(super::#name(#(#arguments),*)))
|
||||
}
|
||||
}
|
||||
} else {
|
||||
quote_spanned! { self.return_type().unwrap().span()=>
|
||||
quote_spanned! { return_span=>
|
||||
type EvalBox = Box<EvalAltResult>;
|
||||
pub #dynamic_signature {
|
||||
super::#name(#(#arguments),*)
|
||||
@@ -484,12 +486,14 @@ impl ExportedFn {
|
||||
// Handle "raw returns", aka cases where the result is a dynamic or an error.
|
||||
//
|
||||
// This allows skipping the Dynamic::from wrap.
|
||||
let return_span = self.return_type().map(|r| r.span())
|
||||
.unwrap_or_else(|| proc_macro2::Span::call_site());
|
||||
let return_expr = if !self.params.return_raw {
|
||||
quote! {
|
||||
quote_spanned! { return_span=>
|
||||
Ok(Dynamic::from(#sig_name(#(#unpack_exprs),*)))
|
||||
}
|
||||
} else {
|
||||
quote_spanned! { self.return_type().unwrap().span()=>
|
||||
quote_spanned! { return_span=>
|
||||
#sig_name(#(#unpack_exprs),*)
|
||||
}
|
||||
};
|
||||
|
Reference in New Issue
Block a user