MCPcopy Create free account
hub / github.com/bytecodealliance/wasmtime / parse_extern

Method parse_extern

cranelift/isle/isle/src/parser.rs:775–805  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

773 }
774
775 fn parse_extern(&mut self) -> Result<Extern> {
776 let pos = self.pos();
777 if self.eat_sym_str("constructor")? {
778 let term = self.parse_ident()?;
779 let func = self.parse_ident()?;
780 Ok(Extern::Constructor { term, func, pos })
781 } else if self.eat_sym_str("extractor")? {
782 let infallible = self.eat_sym_str("infallible")?;
783
784 let term = self.parse_ident()?;
785 let func = self.parse_ident()?;
786
787 Ok(Extern::Extractor {
788 term,
789 func,
790 pos,
791 infallible,
792 })
793 } else if self.eat_sym_str("const")? {
794 let pos = self.pos();
795 let name = self.parse_const()?;
796 let ty = self.parse_ident()?;
797 Ok(Extern::Const { name, ty, pos })
798 } else {
799 Err(self.error(
800 pos,
801 "Invalid extern: must be (extern constructor ...), (extern extractor ...) or (extern const ...)"
802 .to_string(),
803 ))
804 }
805 }
806
807 fn parse_etor(&mut self) -> Result<Extractor> {
808 let pos = self.pos();

Callers 1

parse_defMethod · 0.80

Calls 7

OkFunction · 0.85
eat_sym_strMethod · 0.80
parse_identMethod · 0.80
parse_constMethod · 0.80
posMethod · 0.45
errorMethod · 0.45
to_stringMethod · 0.45

Tested by

no test coverage detected