This commit is contained in:
vms 2021-04-05 01:36:14 +03:00
parent 7b8d72e84c
commit 55cfb1e844
7 changed files with 24 additions and 24 deletions

View File

@ -20,18 +20,18 @@ use serde::Serialize;
use serde::Deserialize;
#[derive(Clone, Serialize, Deserialize)]
pub struct AstFuncArgument {
pub struct AstFnArgument {
pub name: String,
pub ty: ParsedType,
}
#[derive(Clone, Serialize, Deserialize)]
pub struct AstFunctionSignature {
pub struct AstFnSignature {
// Option is needed only for skipping serialization/deserialization of syn::ItemFn
#[serde(skip)]
pub visibility: Option<syn::Visibility>,
pub name: String,
pub arguments: Vec<AstFuncArgument>,
pub arguments: Vec<AstFnArgument>,
// fce supports only one return value now,
// waiting for adding multi-value support in Wasmer.
pub output_type: Option<ParsedType>,
@ -58,7 +58,7 @@ pub struct AstRecordItem {
pub struct AstExternFnItem {
pub link_name: Option<String>,
// only imports are possible here
pub signature: AstFunctionSignature,
pub signature: AstFnSignature,
}
#[derive(Clone, Serialize, Deserialize)]
@ -74,8 +74,8 @@ pub struct AstExternModItem {
}
#[derive(Clone, Serialize, Deserialize)]
pub struct AstFunctionItem {
pub signature: AstFunctionSignature,
pub struct AstFnItem {
pub signature: AstFnSignature,
// Option is needed only for skipping serialization/deserialization of syn::ItemFn
#[serde(skip)]
@ -85,7 +85,7 @@ pub struct AstFunctionItem {
#[derive(Clone, Serialize, Deserialize)]
#[serde(tag = "ast_type")]
pub enum FCEAst {
Function(AstFunctionItem),
Function(AstFnItem),
ExternMod(AstExternModItem),
Record(AstRecordItem),
}

View File

@ -18,8 +18,8 @@ use super::ParseMacroInput;
use crate::fce_ast_types;
use crate::ParsedType;
use crate::fce_ast_types::FCEAst;
use crate::fce_ast_types::AstFunctionItem;
use crate::fce_ast_types::AstFuncArgument;
use crate::fce_ast_types::AstFnItem;
use crate::fce_ast_types::AstFnArgument;
use crate::syn_error;
use syn::Result;
@ -36,7 +36,7 @@ impl ParseMacroInput for syn::ItemFn {
.zip(self.sig.inputs.iter().map(|arg| arg.span()));
check_parsed_functions(parsed_args)?;
let ast_fn = FCEAst::Function(AstFunctionItem {
let ast_fn = FCEAst::Function(AstFnItem {
signature,
original: Some(self),
});
@ -47,7 +47,7 @@ impl ParseMacroInput for syn::ItemFn {
pub(super) fn try_to_ast_signature(
signature: syn::Signature,
visibility: syn::Visibility,
) -> Result<fce_ast_types::AstFunctionSignature> {
) -> Result<fce_ast_types::AstFnSignature> {
use quote::ToTokens;
check_function(&signature)?;
@ -76,7 +76,7 @@ pub(super) fn try_to_ast_signature(
.unwrap_or_default()
.to_string();
let ty = ParsedType::from_type(pat.ty.as_ref())?;
let ast_arg = AstFuncArgument { name, ty };
let ast_arg = AstFnArgument { name, ty };
Ok(ast_arg)
})
@ -84,7 +84,7 @@ pub(super) fn try_to_ast_signature(
let output_type = ParsedType::from_return_type(&output)?;
let ast_function_item = fce_ast_types::AstFunctionSignature {
let ast_function_item = fce_ast_types::AstFnSignature {
visibility: Some(visibility),
name: signature.ident.to_string(),
arguments,
@ -127,7 +127,7 @@ fn check_function(signature: &syn::Signature) -> Result<()> {
}
fn check_parsed_functions<'a>(
args: impl ExactSizeIterator<Item = (&'a AstFuncArgument, proc_macro2::Span)>,
args: impl ExactSizeIterator<Item = (&'a AstFnArgument, proc_macro2::Span)>,
) -> Result<()> {
for (arg, span) in args {
if contains_inner_ref(&arg.ty) {

View File

@ -15,7 +15,7 @@
*/
use super::ParsedType;
use crate::fce_ast_types::AstFuncArgument;
use crate::fce_ast_types::AstFnArgument;
use crate::wasm_type::RustType;
/// This trait could be used to generate raw args needed to construct a export function.
@ -23,7 +23,7 @@ pub(crate) trait FnArgGlueCodeGenerator {
fn generate_arguments(&self) -> Vec<RustType>;
}
impl FnArgGlueCodeGenerator for AstFuncArgument {
impl FnArgGlueCodeGenerator for AstFnArgument {
fn generate_arguments(&self) -> Vec<RustType> {
match self.ty {
ParsedType::Boolean(_) => vec![RustType::I32],

View File

@ -18,7 +18,7 @@ use super::ParsedType;
use super::passing_style_of;
use super::PassingStyle;
use crate::new_ident;
use crate::fce_ast_types::AstFuncArgument;
use crate::fce_ast_types::AstFnArgument;
use quote::quote;
@ -32,7 +32,7 @@ pub(crate) struct FnEpilogDescriptor {
/// Contains all ingredients needed for epilog creation.
pub(crate) struct FnEpilogIngredients<'i> {
pub(crate) args: &'i [AstFuncArgument],
pub(crate) args: &'i [AstFnArgument],
pub(crate) converted_args: &'i [syn::Ident],
pub(crate) return_type: &'i Option<ParsedType>,
}
@ -157,7 +157,7 @@ fn generate_mem_forgets(ingredients: &FnEpilogIngredients<'_>) -> proc_macro2::T
}
fn mem_forget_by_args(
args: &[AstFuncArgument],
args: &[AstFnArgument],
converted_args: &[syn::Ident],
) -> proc_macro2::TokenStream {
debug_assert!(args.len() == converted_args.len());

View File

@ -19,7 +19,7 @@ use super::FnArgGlueCodeGenerator;
use super::passing_style_of;
use crate::new_ident;
use crate::wasm_type::RustType;
use crate::fce_ast_types::AstFuncArgument;
use crate::fce_ast_types::AstFnArgument;
use crate::parsed_type::PassingStyle;
use quote::quote;
@ -48,7 +48,7 @@ pub(crate) trait FnPrologGlueCodeGenerator {
fn generate_prolog(&self) -> FnPrologDescriptor;
}
impl FnPrologGlueCodeGenerator for Vec<AstFuncArgument> {
impl FnPrologGlueCodeGenerator for Vec<AstFnArgument> {
fn generate_prolog(&self) -> FnPrologDescriptor {
let mut raw_arg_names = Vec::with_capacity(self.len());
let mut raw_arg_types = Vec::with_capacity(self.len());

View File

@ -18,7 +18,7 @@ use super::ParsedType;
use crate::wasm_type::RustType;
use crate::new_ident;
use crate::parsed_type::PassingStyle;
use crate::fce_ast_types::AstFuncArgument;
use crate::fce_ast_types::AstFnArgument;
pub(crate) struct WrapperDescriptor {
pub(crate) arg_names: Vec<syn::Ident>,
@ -59,7 +59,7 @@ pub(crate) trait ForeignModPrologGlueCodeGenerator {
fn generate_extern_prolog(&self) -> ExternDescriptor;
}
impl ForeignModPrologGlueCodeGenerator for Vec<AstFuncArgument> {
impl ForeignModPrologGlueCodeGenerator for Vec<AstFnArgument> {
fn generate_wrapper_prolog(&self) -> WrapperDescriptor {
use crate::parsed_type::foreign_mod_arg::ForeignModArgGlueCodeGenerator;
use quote::ToTokens;

View File

@ -25,7 +25,7 @@ use crate::new_ident;
use proc_macro2::TokenStream;
impl quote::ToTokens for fce_ast_types::AstFunctionItem {
impl quote::ToTokens for fce_ast_types::AstFnItem {
fn to_tokens(&self, tokens: &mut TokenStream) {
crate::prepare_global_data!(
Function,