def init_stmt( irstmt: irast.Stmt, qlstmt: qlast.Statement, *, ctx: context.ContextLevel, parent_ctx: context.ContextLevel) -> None: ctx.stmt = irstmt if ctx.toplevel_stmt is None: parent_ctx.toplevel_stmt = ctx.toplevel_stmt = irstmt if parent_ctx.path_scope is None: parent_ctx.path_scope = ctx.path_scope = irast.new_scope_tree() else: ctx.path_scope = parent_ctx.path_scope.attach_fence() pending_own_ns = parent_ctx.pending_stmt_own_path_id_namespace if pending_own_ns: ctx.path_scope.add_namespaces(pending_own_ns) pending_full_ns = parent_ctx.pending_stmt_full_path_id_namespace if pending_full_ns: ctx.path_id_namespace |= pending_full_ns metadata = ctx.stmt_metadata.get(qlstmt) if metadata is not None and metadata.is_unnest_fence: ctx.path_scope.unnest_fence = True irstmt.parent_stmt = parent_ctx.stmt process_with_block(qlstmt, ctx=ctx, parent_ctx=parent_ctx)
def init_stmt( irstmt: irast.Stmt, qlstmt: qlast.Statement, *, ctx: context.ContextLevel, parent_ctx: context.ContextLevel) -> None: ctx.stmt = irstmt if ctx.toplevel_stmt is None: parent_ctx.toplevel_stmt = ctx.toplevel_stmt = irstmt ctx.path_scope = parent_ctx.path_scope.attach_fence() pending_own_ns = parent_ctx.pending_stmt_own_path_id_namespace if pending_own_ns: ctx.path_scope.add_namespaces(pending_own_ns) pending_full_ns = parent_ctx.pending_stmt_full_path_id_namespace if pending_full_ns: ctx.path_id_namespace |= pending_full_ns metadata = ctx.stmt_metadata.get(qlstmt) if metadata is not None: if metadata.is_unnest_fence: ctx.path_scope.unnest_fence = True if metadata.iterator_target: ctx.iterator_ctx = ctx if isinstance(irstmt, irast.MutatingStmt): ctx.path_scope.factoring_fence = True irstmt.parent_stmt = parent_ctx.stmt process_with_block(qlstmt, ctx=ctx, parent_ctx=parent_ctx)