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

Method parse_rule

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

Source from the content-addressed store, hash-verified

823 }
824
825 fn parse_rule(&mut self) -> Result<Rule> {
826 let pos = self.pos();
827 let name = if self.is_sym() {
828 Some(
829 self.parse_ident()
830 .map_err(|err| self.error(pos, format!("Invalid rule name: {err:?}")))?,
831 )
832 } else {
833 None
834 };
835 let prio = if self.is_int() {
836 Some(
837 i64::try_from(self.expect_int()?)
838 .map_err(|err| self.error(pos, format!("Invalid rule priority: {err}")))?,
839 )
840 } else {
841 None
842 };
843 let pattern = self.parse_pattern()?;
844 let mut iflets = vec![];
845 loop {
846 match self.parse_iflet_or_expr()? {
847 IfLetOrExpr::IfLet(iflet) => {
848 iflets.push(iflet);
849 }
850 IfLetOrExpr::Expr(expr) => {
851 return Ok(Rule {
852 pattern,
853 iflets,
854 expr,
855 pos,
856 prio,
857 name,
858 });
859 }
860 }
861 }
862 }
863
864 fn parse_pattern(&mut self) -> Result<Pattern> {
865 let pos = self.pos();

Callers 1

parse_defMethod · 0.80

Calls 10

OkFunction · 0.85
parse_identMethod · 0.80
expect_intMethod · 0.80
parse_patternMethod · 0.80
parse_iflet_or_exprMethod · 0.80
posMethod · 0.45
is_symMethod · 0.45
errorMethod · 0.45
is_intMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected