(&mut self, mut statements: Vec<Stmt<'gc>>)
| 1538 | } |
| 1539 | |
| 1540 | fn generate_block_expr(&mut self, mut statements: Vec<Stmt<'gc>>) -> Result<(), VmError> { |
| 1541 | let last_stmt = statements.pop(); |
| 1542 | for stmt in statements { |
| 1543 | self.generate_stmt(stmt)?; |
| 1544 | } |
| 1545 | // Special handle the last statement to determine how to emit Return |
| 1546 | match last_stmt { |
| 1547 | Some(stmt) if matches!(stmt, Stmt::BlockReturn { .. }) => { |
| 1548 | self.generate_stmt(stmt)?; |
| 1549 | self.emit(OpCode::Return); |
| 1550 | } |
| 1551 | Some(s) if !matches!(s, Stmt::Return { .. }) => { |
| 1552 | self.generate_stmt(s)?; |
| 1553 | // Emit return instruction if the last stmt isn't return |
| 1554 | self.emit_return(); |
| 1555 | } |
| 1556 | Some(stmt) => self.generate_stmt(stmt)?, |
| 1557 | None => self.emit_return(), |
| 1558 | } |
| 1559 | Ok(()) |
| 1560 | } |
| 1561 | |
| 1562 | fn validate_enum_variant(&mut self, enum_name: Token<'gc>, variant: Token<'gc>) { |
| 1563 | // Validate enums and variants |
no test coverage detected