pub struct TyFunctionDecl {Show 17 fields
pub name: Ident,
pub body: TyCodeBlock,
pub parameters: Vec<TyFunctionParameter>,
pub implementing_type: Option<TyDecl>,
pub implementing_for_typeid: Option<TypeId>,
pub span: Span,
pub call_path: CallPath,
pub attributes: AttributesMap,
pub type_parameters: Vec<TypeParameter>,
pub return_type: TypeArgument,
pub visibility: Visibility,
pub is_contract_call: bool,
pub purity: Purity,
pub where_clause: Vec<(Ident, Vec<TraitConstraint>)>,
pub is_trait_method_dummy: bool,
pub is_type_check_finalized: bool,
pub kind: TyFunctionDeclKind,
}
Fields§
§name: Ident
§body: TyCodeBlock
§parameters: Vec<TyFunctionParameter>
§implementing_type: Option<TyDecl>
§implementing_for_typeid: Option<TypeId>
§span: Span
§call_path: CallPath
§attributes: AttributesMap
§type_parameters: Vec<TypeParameter>
§return_type: TypeArgument
§visibility: Visibility
§is_contract_call: bool
whether this function exists in another contract and requires a call to it or not
purity: Purity
§where_clause: Vec<(Ident, Vec<TraitConstraint>)>
§is_trait_method_dummy: bool
§is_type_check_finalized: bool
§kind: TyFunctionDeclKind
Implementations§
Source§impl TyFunctionDecl
impl TyFunctionDecl
pub fn to_fn_selector_value_untruncated( &self, handler: &Handler, engines: &Engines, ) -> Result<Vec<u8>, ErrorEmitted>
Sourcepub fn to_fn_selector_value(
&self,
handler: &Handler,
engines: &Engines,
) -> Result<[u8; 4], ErrorEmitted>
pub fn to_fn_selector_value( &self, handler: &Handler, engines: &Engines, ) -> Result<[u8; 4], ErrorEmitted>
Converts a TyFunctionDecl into a value that is to be used in contract function selectors. Hashes the name and parameters using SHA256, and then truncates to four bytes.
pub fn to_selector_name( &self, handler: &Handler, engines: &Engines, ) -> Result<String, ErrorEmitted>
pub fn is_main(&self) -> bool
Sourcepub fn is_test(&self) -> bool
pub fn is_test(&self) -> bool
Whether or not this function is a unit test, i.e. decorated with #[test]
.
pub fn inline(&self) -> Option<Inline>
pub fn is_fallback(&self) -> bool
Sourcepub fn is_constructor(&self, engines: &Engines, type_id: TypeId) -> Option<bool>
pub fn is_constructor(&self, engines: &Engines, type_id: TypeId) -> Option<bool>
Whether or not this function is a constructor for the type given by type_id
.
Returns Some(true)
if the function is surely the constructor and Some(false)
if
it is surely not a constructor, and None
if it cannot decide.
Source§impl TyFunctionDecl
impl TyFunctionDecl
pub fn type_check( handler: &Handler, ctx: TypeCheckContext<'_>, fn_decl: &FunctionDeclaration, is_method: bool, is_in_impl_self: bool, implementing_for_typeid: Option<TypeId>, ) -> Result<Self, ErrorEmitted>
pub fn type_check_signature( handler: &Handler, ctx: TypeCheckContext<'_>, fn_decl: &FunctionDeclaration, is_method: bool, is_in_impl_self: bool, implementing_for_typeid: Option<TypeId>, ) -> Result<Self, ErrorEmitted>
pub fn type_check_body( handler: &Handler, ctx: TypeCheckContext<'_>, fn_decl: &FunctionDeclaration, ty_fn_decl: &mut Self, ) -> Result<Self, ErrorEmitted>
Trait Implementations§
Source§impl Clone for TyFunctionDecl
impl Clone for TyFunctionDecl
Source§fn clone(&self) -> TyFunctionDecl
fn clone(&self) -> TyFunctionDecl
Returns a copy of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for TyFunctionDecl
impl Debug for TyFunctionDecl
Source§impl DeclEngineGet<DeclId<TyFunctionDecl>, TyFunctionDecl> for DeclEngine
impl DeclEngineGet<DeclId<TyFunctionDecl>, TyFunctionDecl> for DeclEngine
fn get(&self, index: &DeclId<TyFunctionDecl>) -> Arc<TyFunctionDecl>
Source§impl DeclEngineGet<DeclRef<DeclId<TyFunctionDecl>>, TyFunctionDecl> for DeclEngine
impl DeclEngineGet<DeclRef<DeclId<TyFunctionDecl>>, TyFunctionDecl> for DeclEngine
fn get(&self, index: &DeclRef<DeclId<TyFunctionDecl>>) -> Arc<TyFunctionDecl>
Source§impl DeclEngineGetParsedDecl<TyFunctionDecl> for DeclEngine
impl DeclEngineGetParsedDecl<TyFunctionDecl> for DeclEngine
fn get_parsed_decl( &self, decl_id: &DeclId<TyFunctionDecl>, ) -> Option<Declaration>
Source§impl DeclEngineGetParsedDeclId<TyFunctionDecl> for DeclEngine
impl DeclEngineGetParsedDeclId<TyFunctionDecl> for DeclEngine
fn get_parsed_decl_id( &self, decl_id: &DeclId<TyFunctionDecl>, ) -> Option<ParsedDeclId<<TyFunctionDecl as TyDeclParsedType>::ParsedType>>
Source§impl DeclEngineInsert<TyFunctionDecl> for DeclEngine
impl DeclEngineInsert<TyFunctionDecl> for DeclEngine
fn insert( &self, decl: TyFunctionDecl, parsed_decl_id: Option<&ParsedDeclId<<TyFunctionDecl as TyDeclParsedType>::ParsedType>>, ) -> DeclRef<DeclId<TyFunctionDecl>>
Source§impl DeclEngineInsertArc<TyFunctionDecl> for DeclEngine
impl DeclEngineInsertArc<TyFunctionDecl> for DeclEngine
fn insert_arc( &self, decl: Arc<TyFunctionDecl>, parsed_decl_id: Option<&ParsedDeclId<<TyFunctionDecl as TyDeclParsedType>::ParsedType>>, ) -> DeclRef<DeclId<TyFunctionDecl>>
Source§impl DeclEngineReplace<TyFunctionDecl> for DeclEngine
impl DeclEngineReplace<TyFunctionDecl> for DeclEngine
fn replace(&self, index: DeclId<TyFunctionDecl>, decl: TyFunctionDecl)
Source§impl FunctionSignature for TyFunctionDecl
impl FunctionSignature for TyFunctionDecl
fn parameters(&self) -> &Vec<TyFunctionParameter>
fn return_type(&self) -> &TypeArgument
Source§impl HashWithEngines for TyFunctionDecl
impl HashWithEngines for TyFunctionDecl
Source§impl IsConcrete for TyFunctionDecl
impl IsConcrete for TyFunctionDecl
fn is_concrete(&self, engines: &Engines) -> bool
Source§impl PartialEqWithEngines for TyFunctionDecl
impl PartialEqWithEngines for TyFunctionDecl
fn eq(&self, other: &Self, ctx: &PartialEqWithEnginesContext<'_>) -> bool
impl DeclEngineIndex<TyFunctionDecl> for DeclEngine
impl EqWithEngines for TyFunctionDecl
Auto Trait Implementations§
impl Freeze for TyFunctionDecl
impl RefUnwindSafe for TyFunctionDecl
impl Send for TyFunctionDecl
impl Sync for TyFunctionDecl
impl Unpin for TyFunctionDecl
impl UnwindSafe for TyFunctionDecl
Blanket Implementations§
Source§impl<T> AnyDebug for T
impl<T> AnyDebug for T
Source§fn as_any_ref(&self) -> &(dyn Any + 'static)
fn as_any_ref(&self) -> &(dyn Any + 'static)
Returns a reference to the underlying type as
Any
.Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self
to use its Binary
implementation when Debug
-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self
to use its Display
implementation when
Debug
-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self
to use its LowerExp
implementation when
Debug
-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self
to use its LowerHex
implementation when
Debug
-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self
to use its Octal
implementation when Debug
-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self
to use its Pointer
implementation when
Debug
-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self
to use its UpperExp
implementation when
Debug
-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self
to use its UpperHex
implementation when
Debug
-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self
and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self
, then passes self.as_ref()
into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self
, then passes self.as_mut()
into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self
, then passes self.deref()
into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> StorageAsMut for T
impl<T> StorageAsMut for T
fn storage<Type>(&mut self) -> StorageMut<'_, Self, Type>where
Type: Mappable,
fn storage_as_mut<Type>(&mut self) -> StorageMut<'_, Self, Type>where
Type: Mappable,
Source§impl<T> StorageAsRef for T
impl<T> StorageAsRef for T
fn storage<Type>(&self) -> StorageRef<'_, Self, Type>where
Type: Mappable,
fn storage_as_ref<Type>(&self) -> StorageRef<'_, Self, Type>where
Type: Mappable,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B>
of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B>
of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R>
view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R>
view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target
of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target
of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap()
only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow()
only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref()
only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut()
only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref()
only in debug builds, and is erased in release
builds.