From 7f8bf59b75b3a418123b4c5bef5af82144cccfde Mon Sep 17 00:00:00 2001
From: Thibault Martin <thi.martin.pro@pm.me>
Date: Fri, 20 Sep 2024 09:26:29 +0200
Subject: [PATCH] [kernel] Add a warn error for implicit int like clang and gcc

---
 src/kernel_internals/typing/cabs2cil.ml            | 6 +++++-
 src/kernel_services/plugin_entry_points/kernel.ml  | 3 +++
 src/kernel_services/plugin_entry_points/kernel.mli | 2 ++
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/kernel_internals/typing/cabs2cil.ml b/src/kernel_internals/typing/cabs2cil.ml
index abb0e06bdc..2b0b61cf17 100644
--- a/src/kernel_internals/typing/cabs2cil.ml
+++ b/src/kernel_internals/typing/cabs2cil.ml
@@ -4199,7 +4199,11 @@ let rec doSpecList loc ghost (suggestedAnonName: string)
     | [Cabs.Tunsigned; Cabs.Tshort] -> TInt(IUShort, [])
     | [Cabs.Tunsigned; Cabs.Tshort; Cabs.Tint] -> TInt(IUShort, [])
 
-    | [] -> TInt(IInt, [])
+    | [] ->
+      Kernel.warning ~current:true ~wkey:Kernel.wkey_implicit_int
+        "type specifier missing, defaults to 'int'; ISO C99 and later do not \
+         support implicit int";
+      TInt(IInt, [])
     | [Cabs.Tint] -> TInt(IInt, [])
     | [Cabs.Tsigned] -> TInt(IInt, [])
     | [Cabs.Tsigned; Cabs.Tint] -> TInt(IInt, [])
diff --git a/src/kernel_services/plugin_entry_points/kernel.ml b/src/kernel_services/plugin_entry_points/kernel.ml
index 792ea61154..03d0e1bec5 100644
--- a/src/kernel_services/plugin_entry_points/kernel.ml
+++ b/src/kernel_services/plugin_entry_points/kernel.ml
@@ -204,6 +204,9 @@ let () = set_warn_status wkey_jcdb Log.Wonce
 let wkey_implicit_function_declaration = register_warn_category
     "typing:implicit-function-declaration"
 
+let wkey_implicit_int = register_warn_category "typing:implicit-int"
+let () = set_warn_status wkey_implicit_int Log.Werror
+
 let wkey_no_proto = register_warn_category "typing:no-proto"
 
 let wkey_missing_spec = register_warn_category "annot:missing-spec"
diff --git a/src/kernel_services/plugin_entry_points/kernel.mli b/src/kernel_services/plugin_entry_points/kernel.mli
index 33076ff8e3..675cfd1021 100644
--- a/src/kernel_services/plugin_entry_points/kernel.mli
+++ b/src/kernel_services/plugin_entry_points/kernel.mli
@@ -174,6 +174,8 @@ val wkey_linker_weak: warn_category
 
 val wkey_implicit_conv_void_ptr: warn_category
 
+val wkey_implicit_int: warn_category
+
 val wkey_incompatible_types_call: warn_category
 
 val wkey_incompatible_pointer_types: warn_category
-- 
GitLab