From 072783ad51e14dae0a3d2236037659e13437beef Mon Sep 17 00:00:00 2001
From: Thibaut Benjamin <thibaut.benjamin@gmail.com>
Date: Thu, 1 Sep 2022 15:05:20 +0200
Subject: [PATCH] [e-acsl] add test for bug e-acsl#204

---
 .../e-acsl/tests/bts/issue-eacsl-204.c        | 16 +++++
 .../tests/bts/oracle/gen_issue-eacsl-204.c    | 66 +++++++++++++++++++
 .../bts/oracle/issue-eacsl-204.res.oracle     |  2 +
 3 files changed, 84 insertions(+)
 create mode 100644 src/plugins/e-acsl/tests/bts/issue-eacsl-204.c
 create mode 100644 src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-204.c
 create mode 100644 src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-204.res.oracle

diff --git a/src/plugins/e-acsl/tests/bts/issue-eacsl-204.c b/src/plugins/e-acsl/tests/bts/issue-eacsl-204.c
new file mode 100644
index 00000000000..9072e82aa2d
--- /dev/null
+++ b/src/plugins/e-acsl/tests/bts/issue-eacsl-204.c
@@ -0,0 +1,16 @@
+/*
+  run.config
+  COMMENT: issue eacsl#204: name conflict when a function
+  COMMENT: with contract shares a name with a logic function
+*/
+
+/*@ predicate equalTag(integer n) = n; */
+
+/*@ ensures equalTag(1); */
+int equalTag() {
+  return 1;
+}
+
+int main(void) {
+  return 0;
+}
diff --git a/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-204.c b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-204.c
new file mode 100644
index 00000000000..09c27db7dae
--- /dev/null
+++ b/src/plugins/e-acsl/tests/bts/oracle/gen_issue-eacsl-204.c
@@ -0,0 +1,66 @@
+/* Generated by Frama-C */
+#include "pthread.h"
+#include "sched.h"
+#include "signal.h"
+#include "stddef.h"
+#include "stdint.h"
+#include "stdio.h"
+#include "time.h"
+extern  __attribute__((__FC_BUILTIN__)) int __e_acsl_sound_verdict;
+
+/*@ predicate equalTag(integer n) = n != 0;
+
+*/
+int __gen_e_acsl_equalTag_2(int n);
+
+/*@ ensures equalTag(1); */
+int __gen_e_acsl_equalTag(void);
+
+int equalTag(void)
+{
+  int __retres;
+  __retres = 1;
+  return __retres;
+}
+
+int main(void)
+{
+  int __retres;
+  __e_acsl_memory_init((int *)0,(char ***)0,8UL);
+  __retres = 0;
+  __e_acsl_memory_clean();
+  return __retres;
+}
+
+/*@ ensures equalTag(1); */
+int __gen_e_acsl_equalTag(void)
+{
+  int __retres;
+  __retres = equalTag();
+  {
+    int __gen_e_acsl_equalTag_3;
+    __e_acsl_assert_data_t __gen_e_acsl_assert_data = {.values = (void *)0};
+    __gen_e_acsl_equalTag_3 = __gen_e_acsl_equalTag_2(1);
+    __e_acsl_assert_register_int(& __gen_e_acsl_assert_data,"equalTag(1)",0,
+                                 __gen_e_acsl_equalTag_3);
+    __gen_e_acsl_assert_data.blocking = 1;
+    __gen_e_acsl_assert_data.kind = "Postcondition";
+    __gen_e_acsl_assert_data.pred_txt = "equalTag(1)";
+    __gen_e_acsl_assert_data.file = "issue-eacsl-204.c";
+    __gen_e_acsl_assert_data.fct = "equalTag";
+    __gen_e_acsl_assert_data.line = 9;
+    __e_acsl_assert(__gen_e_acsl_equalTag_3,& __gen_e_acsl_assert_data);
+    __e_acsl_assert_clean(& __gen_e_acsl_assert_data);
+    return __retres;
+  }
+}
+
+/*@ assigns \result;
+    assigns \result \from n; */
+int __gen_e_acsl_equalTag_2(int n)
+{
+  int __retres = n != 0;
+  return __retres;
+}
+
+
diff --git a/src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-204.res.oracle b/src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-204.res.oracle
new file mode 100644
index 00000000000..efd02631129
--- /dev/null
+++ b/src/plugins/e-acsl/tests/bts/oracle/issue-eacsl-204.res.oracle
@@ -0,0 +1,2 @@
+[e-acsl] beginning translation.
+[e-acsl] translation done in project "e-acsl".
-- 
GitLab