aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-07-10 02:01:46 +0200
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-07-10 02:03:57 +0200
commitc122e6540d537f2aa957631435a25d04ed58fef6 (patch)
treeb402e748a816d49ad447227f74e8d6637043c65a
parentefc5f66c4221f1cd7cd84da957f2557dd9c2241c (diff)
downloadsparse-c122e6540d537f2aa957631435a25d04ed58fef6.tar.gz
add testcase for missing warning for assignment to const
The problem is seems to be related with evaluate_dereference() where all mods are dropped when the type is a node. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r--validation/eval/array-quals-node.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/validation/eval/array-quals-node.c b/validation/eval/array-quals-node.c
new file mode 100644
index 00000000..99a4db13
--- /dev/null
+++ b/validation/eval/array-quals-node.c
@@ -0,0 +1,29 @@
+struct s {
+ int a;
+ int b[3];
+ int c[2][3];
+};
+
+struct c {
+ const struct s s;
+};
+
+extern struct c v;
+
+void f(void)
+{
+ v.s.a = 0;
+ *v.s.b = 0;
+ **v.s.c = 0;
+}
+
+/*
+ * check-name: array-quals-node
+ * check-known-to-fail
+ *
+ * check-error-start
+eval/array-quals-node.c:15:14: error: assignment to const expression
+eval/array-quals-node.c:16:14: error: assignment to const expression
+eval/array-quals-node.c:17:14: error: assignment to const expression
+ * check-error-end
+ */