MCPcopy Create free account
hub / github.com/dylan-sutton-chavez/edge-python / if_body

Method if_body

compiler/src/modules/parser/control.rs:21–50  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

19 }
20
21 pub(super) fn if_body(&mut self) {
22 self.expr();
23 let jf = self.emit_jump(OpCode::JumpIfFalse);
24
25 self.eat(TokenType::Colon);
26 self.compile_block();
27
28 match self.peek() {
29 Some(TokenType::Elif) => {
30 self.advance();
31 let jmp = self.emit_jump(OpCode::Jump);
32 self.mid_block();
33 self.patch(jf);
34 self.if_body();
35 self.patch(jmp);
36 }
37 Some(TokenType::Else) => {
38 self.advance();
39 let jmp = self.emit_jump(OpCode::Jump);
40 self.mid_block();
41 self.patch(jf);
42 self.eat(TokenType::Colon);
43 self.compile_block();
44 self.patch(jmp);
45 }
46 _ => {
47 self.patch(jf);
48 }
49 }
50 }
51
52 /* match/case: literals, captures, wildcards, OR, guards, sequences; emits subject-load + pattern + guard + Jump-end. */
53 pub(super) fn match_stmt(&mut self) {

Callers 1

if_stmtMethod · 0.80

Calls 8

exprMethod · 0.80
emit_jumpMethod · 0.80
eatMethod · 0.80
compile_blockMethod · 0.80
advanceMethod · 0.80
mid_blockMethod · 0.80
patchMethod · 0.80
peekMethod · 0.45

Tested by

no test coverage detected