syn_solidity

Struct ItemFunction

Source
pub struct ItemFunction {
    pub attrs: Vec<Attribute>,
    pub kind: FunctionKind,
    pub name: Option<SolIdent>,
    pub paren_token: Option<Paren>,
    pub parameters: ParameterList,
    pub attributes: FunctionAttributes,
    pub returns: Option<Returns>,
    pub body: FunctionBody,
}
Expand description

A function, constructor, fallback, receive, or modifier definition: function helloWorld() external pure returns(string memory);.

Solidity reference: https://docs.soliditylang.org/en/latest/grammar.html#a4.SolidityParser.functionDefinition

Fields§

§attrs: Vec<Attribute>

The syn attributes of the function.

§kind: FunctionKind§name: Option<SolIdent>§paren_token: Option<Paren>§parameters: ParameterList§attributes: FunctionAttributes

The Solidity attributes of the function.

§returns: Option<Returns>

The optional return types of the function.

§body: FunctionBody

Implementations§

Source§

impl ItemFunction

Source

pub fn new(kind: FunctionKind, name: Option<SolIdent>) -> Self

Create a new function of the given kind.

Source

pub fn new_getter(name: SolIdent, ty: Type) -> Self

Create a new function with the given name and arguments.

Note that:

  • the type is not validated
  • structs/array of structs in return position are not expanded
  • the body is not set

The attributes are set to public view.

See the Solidity documentation for more details on how getters are generated.

Source

pub fn from_variable_definition(var: VariableDefinition) -> Self

Creates a new function from a variable definition.

The function will have the same name and the variable type’s will be the return type. The variable attributes are ignored, and instead will always generate public returns.

See new_getter for more details.

Source

pub fn name(&self) -> &SolIdent

Returns the name of the function.

§Panics

Panics if the function has no name. This is the case when kind is not Function.

Source

pub fn is_void(&self) -> bool

Returns true if the function returns nothing.

Source

pub fn has_implementation(&self) -> bool

Returns true if the function has a body.

Source

pub fn call_type(&self) -> Type

Returns the function’s arguments tuple type.

Source

pub fn return_type(&self) -> Option<Type>

Returns the function’s return tuple type.

Source

pub fn body(&self) -> Option<&[Stmt]>

Returns a reference to the function’s body, if any.

Source

pub fn body_mut(&mut self) -> Option<&mut Vec<Stmt>>

Returns a mutable reference to the function’s body, if any.

Source

pub fn into_body(self) -> Result<Vec<Stmt>, Self>

Trait Implementations§

Source§

impl Clone for ItemFunction

Source§

fn clone(&self) -> ItemFunction

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ItemFunction

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for ItemFunction

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Parse for ItemFunction

Source§

fn parse(input: ParseStream<'_>) -> Result<Self>

Source§

impl Spanned for ItemFunction

Source§

fn span(&self) -> Span

Returns a Span covering the complete contents of this syntax tree node, or Span::call_site() if this node is empty.
Source§

fn set_span(&mut self, span: Span)

Sets the span of this syntax tree node if it is not empty.
Source§

fn with_span(self, span: Span) -> Self
where Self: Sized,

Sets the span of this owned syntax tree node if it is not empty.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.