From 66fdfc2f70655faac9e88afd333293ee2de0abf5 Mon Sep 17 00:00:00 2001 From: Virgile Prevosto <virgile.prevosto@m4x.org> Date: Thu, 25 Jan 2024 18:01:11 +0100 Subject: [PATCH] [kernel] Better localization for array length errors --- src/kernel_internals/typing/cabs2cil.ml | 1 + tests/syntax/oracle/very_large_integers.14.res.oracle | 2 +- tests/syntax/oracle/very_large_integers.4.res.oracle | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/kernel_internals/typing/cabs2cil.ml b/src/kernel_internals/typing/cabs2cil.ml index 3925038637d..16f71399f19 100644 --- a/src/kernel_internals/typing/cabs2cil.ml +++ b/src/kernel_internals/typing/cabs2cil.ml @@ -3364,6 +3364,7 @@ let integerArrayLength (leno: exp option) : int = try lenOfArray leno with | LenOfArray cause -> + Cil.CurrentLoc.set len.eloc; abort_context "Array length %a is %a: no explicit initializer allowed." Cil_printer.pp_exp len Cil.pp_incorrect_array_length cause diff --git a/tests/syntax/oracle/very_large_integers.14.res.oracle b/tests/syntax/oracle/very_large_integers.14.res.oracle index 7cbdaf67c3b..5846557a229 100644 --- a/tests/syntax/oracle/very_large_integers.14.res.oracle +++ b/tests/syntax/oracle/very_large_integers.14.res.oracle @@ -4,7 +4,7 @@ [kernel] very_large_integers.c:84: Warning: ignoring invalid aligned attribute: __aligned__((9223372036854775808)+ (9223372036854775808) ) -[kernel] very_large_integers.c:106: User Error: Array length is too large. +[kernel] very_large_integers.c:107: User Error: Array length is too large. [kernel] very_large_integers.c:114: User Error: array length too large: 7205759403792794 112 // Previously caused Out of memory diff --git a/tests/syntax/oracle/very_large_integers.4.res.oracle b/tests/syntax/oracle/very_large_integers.4.res.oracle index 77a8b542245..f30af367582 100644 --- a/tests/syntax/oracle/very_large_integers.4.res.oracle +++ b/tests/syntax/oracle/very_large_integers.4.res.oracle @@ -5,7 +5,7 @@ 60 61 #ifdef INIT_DESIGNATOR 62 int arr2[9999999999999999999U] = { [9999999999999999999U] = 42 }; - ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ^^^^^^^^^^^^^^^^^^^^ 63 #endif 64 [kernel] Frama-C aborted: invalid user input. -- GitLab