From c767103a766b57cfd6df93b493c23cce8ce1dddb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr>
Date: Tue, 29 Jun 2021 14:56:27 +0200
Subject: [PATCH] [Eva] Taint domain: fixes "taints" extension for behaviors.

Parses the extension terms in the post-state.
---
 src/plugins/value/domains/taint_domain.ml | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/plugins/value/domains/taint_domain.ml b/src/plugins/value/domains/taint_domain.ml
index 05a914e0b1a..b1406f526ec 100644
--- a/src/plugins/value/domains/taint_domain.ml
+++ b/src/plugins/value/domains/taint_domain.ml
@@ -367,13 +367,18 @@ let () =
 (* Registers ACSL extension "taint" (statement annotation)
    and "taints" (behavior extension). *)
 let () =
-  let typer context _loc args =
+  let typer kind context _loc args =
     let open Logic_typing in
-    let parse context = context.type_term context context.pre_state in
+    let get_state context =
+      match kind with
+      | `Pre -> context.pre_state
+      | `Post -> context.post_state [Normal]
+    in
+    let parse context = context.type_term context (get_state context) in
     Ext_terms (List.map (parse context) args)
   in
-  Acsl_extension.register_behavior "taints" typer false;
-  Acsl_extension.register_code_annot_next_stmt "taint" typer false
+  Acsl_extension.register_behavior "taints" (typer `Post) false;
+  Acsl_extension.register_code_annot_next_stmt "taint" (typer `Pre) false
 
 (* Interpretation of logic by the taint domain, using the cvalue domain. *)
 module TaintLogic = struct
-- 
GitLab