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