Skip to main content

left_edge

Function left_edge 

Source
fn left_edge<T: AstInfo>(expr: &Expr<T>) -> u8
Expand description

The loosest precedence exposed on expr’s left spine, the mirror of right_edge. For a right operand (an operator on its left), this is what decides parenthesization: a left-associative operator printed to its left reaches into the left spine and re-associates if that spine exposes a precedence at or below the operator’s. The top operator alone is not enough, because a left-nested chain can bury a looser operator down its left edge: 387 = ANY (...) LIKE a IN (...) has a top IN (Like) but exposes the = ANY (Cmp) on its left, so a tighter <> to its left (48 <> 387 = ANY (...) ...) would steal the <> into the = ANY’s left rather than leave it as the <>’s right operand. Forms that open with their own token on the left (a prefix operator, a keyword, (…), a literal) are ATOM.