(
db: &'db dyn crate::Db,
parser: &mut Parser<'_, 'db>,
precedence: impl FnOnce(
&'db dyn crate::Db,
&mut Parser<'_, 'db>,
) -> Result<Option<AstExprKind<'db>>, crate::
| 45 | } |
| 46 | |
| 47 | fn opt_parse_expr_with_precedence<'db>( |
| 48 | db: &'db dyn crate::Db, |
| 49 | parser: &mut Parser<'_, 'db>, |
| 50 | precedence: impl FnOnce( |
| 51 | &'db dyn crate::Db, |
| 52 | &mut Parser<'_, 'db>, |
| 53 | ) -> Result<Option<AstExprKind<'db>>, crate::ParseFail<'db>>, |
| 54 | ) -> Result<Option<AstExpr<'db>>, crate::ParseFail<'db>> { |
| 55 | let start_span = parser.peek_span(); |
| 56 | let Some(kind) = precedence(db, parser)? else { |
| 57 | return Ok(None); |
| 58 | }; |
| 59 | Ok(Some(AstExpr::new( |
| 60 | start_span.to(db, parser.last_span()), |
| 61 | kind, |
| 62 | ))) |
| 63 | } |
| 64 | |
| 65 | const BINARY_OP_PRECEDENCE: &[&[(Op, AstBinaryOp)]] = &[ |
| 66 | &[ |
no test coverage detected