ink_codegen/generator/
solidity.rs1use ir::{
2 Callable,
3 CallableWithSelector,
4 Message,
5};
6use proc_macro2::{
7 Ident,
8 TokenStream as TokenStream2,
9};
10use quote::{
11 format_ident,
12 quote,
13};
14
15pub(crate) fn solidity_selector(message: &CallableWithSelector<Message>) -> TokenStream2 {
17 let call_type_ident = solidity_call_type_ident(message);
18 quote!(
19 {
20 <__ink_sol_interop__::#call_type_ident>::SELECTOR
21 }
22 )
23}
24
25pub(crate) fn solidity_selector_id(
28 message: &CallableWithSelector<Message>,
29) -> TokenStream2 {
30 let call_type_ident = solidity_call_type_ident(message);
31 quote!(
32 {
33 <__ink_sol_interop__::#call_type_ident>::SELECTOR_ID
34 }
35 )
36}
37
38pub(crate) fn solidity_call_type_ident(message: &CallableWithSelector<Message>) -> Ident {
40 let ident = message.ident();
41 let id = message.composed_selector().into_be_u32();
42 format_ident!("{ident}{id}Call")
43}