From aa02a121a57b0d854d616ae532cf460fdaa279d0 Mon Sep 17 00:00:00 2001
From: Calum Grant <calumgrant@github.com>
Date: Wed, 6 Nov 2024 14:12:36 +0000
Subject: [PATCH] C++: Remove FPs from cpp/too-few-arguments

---
 .../Likely Bugs/Underspecified Functions/TooFewArguments.qll  | 4 +++-
 .../Underspecified Functions/TooFewArguments.expected         | 2 --
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/cpp/ql/src/Likely Bugs/Underspecified Functions/TooFewArguments.qll b/cpp/ql/src/Likely Bugs/Underspecified Functions/TooFewArguments.qll
index 6f3f4d43e9aa..218a54b36c51 100644
--- a/cpp/ql/src/Likely Bugs/Underspecified Functions/TooFewArguments.qll	
+++ b/cpp/ql/src/Likely Bugs/Underspecified Functions/TooFewArguments.qll	
@@ -51,5 +51,7 @@ predicate tooFewArguments(FunctionCall fc, Function f) {
     hasDefiniteNumberOfParameters(fde)
   |
     fde.getNumberOfParameters() > fc.getNumberOfArguments()
-  )
+  ) and
+  // Don't report on implicit function declarations, as these are likely extraction errors.
+  not f.getADeclarationEntry().isImplicit()
 }
diff --git a/cpp/ql/test/query-tests/Likely Bugs/Underspecified Functions/TooFewArguments.expected b/cpp/ql/test/query-tests/Likely Bugs/Underspecified Functions/TooFewArguments.expected
index 42c4f7f94559..956729115d75 100644
--- a/cpp/ql/test/query-tests/Likely Bugs/Underspecified Functions/TooFewArguments.expected	
+++ b/cpp/ql/test/query-tests/Likely Bugs/Underspecified Functions/TooFewArguments.expected	
@@ -1,4 +1,2 @@
-| test.c:34:3:34:19 | call to not_yet_declared2 | This call has fewer arguments than required by $@. | test.c:32:3:32:3 | not_yet_declared2 | not_yet_declared2 |
-| test.c:34:3:34:19 | call to not_yet_declared2 | This call has fewer arguments than required by $@. | test.c:76:6:76:22 | not_yet_declared2 | not_yet_declared2 |
 | test.c:36:3:36:29 | call to declared_empty_defined_with | This call has fewer arguments than required by $@. | test.c:77:6:77:32 | declared_empty_defined_with | declared_empty_defined_with |
 | test.c:87:10:87:20 | call to dereference | This call has fewer arguments than required by $@. | test.c:90:5:90:15 | dereference | dereference |