pub struct FuncDecl { /* private fields */ }Expand description
A function declaration: name, signature, linkage, and attributes.
§Examples
use ir_lang::{Attrs, Linkage, Module, Signature, Type};
let mut m = Module::new("m");
let f = m.declare_function("puts", &Signature::new(&[Type::Ptr], &[Type::I32]), Linkage::Import)?;
m.set_attrs(f, Attrs::NOGC)?;
let d = m.func_decl(f).unwrap();
assert_eq!((d.name(), d.linkage(), d.attrs()), ("puts", Linkage::Import, Attrs::NOGC));
assert_eq!(m.signature(d.sig()).unwrap().returns, [Type::I32]);Implementations§
Source§impl FuncDecl
impl FuncDecl
Sourcepub fn name(&self) -> &str
pub fn name(&self) -> &str
The symbol name.
§Examples
use ir_lang::{Linkage, Module, Signature};
let mut m = Module::new("m");
let f = m.declare_function("main", &Signature::new(&[], &[]), Linkage::Export)?;
assert_eq!(m.func_decl(f).unwrap().name(), "main");Sourcepub fn sig(&self) -> SigId
pub fn sig(&self) -> SigId
The signature.
§Examples
use ir_lang::{Linkage, Module, Signature};
let mut m = Module::new("m");
let f = m.declare_function("f", &Signature::new(&[], &[]), Linkage::Export)?;
let s = m.func_decl(f).unwrap().sig();
assert_eq!(m.signature(s), Some(&Signature::new(&[], &[])));Trait Implementations§
impl Eq for FuncDecl
impl StructuralPartialEq for FuncDecl
Auto Trait Implementations§
impl Freeze for FuncDecl
impl RefUnwindSafe for FuncDecl
impl Send for FuncDecl
impl Sync for FuncDecl
impl Unpin for FuncDecl
impl UnsafeUnpin for FuncDecl
impl UnwindSafe for FuncDecl
Blanket Implementations§
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