From d27f86bba4db3fc091842d92c1417edece8d7b9d 2022-05-19 18:07:36 From: MH Date: 2022-05-19 18:07:36 Subject: [PATCH] Fix bug related to sync-escape detection --- diff --git a/src/protocol/parser/pass_validation_linking.rs b/src/protocol/parser/pass_validation_linking.rs index 724ed5f0f244e47449660d821740d0d23faa2c78..3e0243176a2f009b4916a2ac192268733cf5b5d2 100644 --- a/src/protocol/parser/pass_validation_linking.rs +++ b/src/protocol/parser/pass_validation_linking.rs @@ -50,6 +50,7 @@ use super::visitor::{ }; use crate::protocol::parser::ModuleCompilationPhase; +#[derive(Debug)] struct ControlFlowStatement { in_sync: SynchronousStatementId, in_while: WhileStatementId, @@ -324,11 +325,12 @@ impl Visitor for PassValidationLinking { } fn visit_while_stmt(&mut self, ctx: &mut Ctx, id: WhileStatementId) -> VisitorResult { - let stmt = &ctx.heap[id]; + let stmt = &mut ctx.heap[id]; let end_while_id = stmt.end_while; let test_expr_id = stmt.test; let body_stmt_id = stmt.body; let scope_id = stmt.scope; + stmt.in_sync = self.in_sync; let old_while = self.in_while; self.in_while = id;