[PATCH] D153267: [clang][Diagnostics] Provide parameter source range to arity-mismatch notes
Takuya Shimizu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sun Jun 25 08:30:59 PDT 2023
This revision was automatically updated to reflect the committed changes.
Closed by commit rG409a8097c5c7: [clang][Diagnostics] Provide parameter source range to arity-mismatch notes (authored by hazohelet).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D153267/new/
https://reviews.llvm.org/D153267
Files:
clang/docs/ReleaseNotes.rst
clang/lib/Sema/SemaExpr.cpp
clang/lib/Sema/SemaOverload.cpp
clang/test/Misc/diag-func-call-ranges.c
clang/test/Misc/diag-func-call-ranges.cpp
Index: clang/test/Misc/diag-func-call-ranges.cpp
===================================================================
--- /dev/null
+++ clang/test/Misc/diag-func-call-ranges.cpp
@@ -0,0 +1,14 @@
+// RUN: not %clang_cc1 -fsyntax-only -fdiagnostics-print-source-range-info %s 2>&1 | FileCheck %s --strict-whitespace
+
+// CHECK: error: no matching function for call to 'func'
+
+// CHECK: :{[[@LINE+1]]:12-[[@LINE+1]]:18}: note: {{.*}} requires single argument
+void func( int aa ) {}
+// CHECK: :{[[@LINE+1]]:12-[[@LINE+3]]:18}: note: {{.*}} requires 3 arguments
+void func( int aa,
+ int bb,
+ int cc) {}
+
+void arity_mismatch() {
+ func(2, 4);
+}
Index: clang/test/Misc/diag-func-call-ranges.c
===================================================================
--- /dev/null
+++ clang/test/Misc/diag-func-call-ranges.c
@@ -0,0 +1,11 @@
+// RUN: not %clang_cc1 -fsyntax-only -fdiagnostics-print-source-range-info %s 2>&1 | FileCheck %s --strict-whitespace
+
+// CHECK: :{9:3-9:7}: error: too few arguments
+// CHECK: :{7:12-7:26}: note: 'func' declared here
+// CHECK: :{10:3-10:7}{10:13-10:17}: error: too many arguments
+// CHECK: :{7:12-7:26}: note: 'func' declared here
+void func( int aa, int bb) {}
+void arity_mismatch() {
+ func(3);
+ func(3, 4,5, 6);
+}
Index: clang/lib/Sema/SemaOverload.cpp
===================================================================
--- clang/lib/Sema/SemaOverload.cpp
+++ clang/lib/Sema/SemaOverload.cpp
@@ -11037,11 +11037,13 @@
if (modeCount == 1 && Fn->getParamDecl(0)->getDeclName())
S.Diag(Fn->getLocation(), diag::note_ovl_candidate_arity_one)
<< (unsigned)FnKindPair.first << (unsigned)FnKindPair.second
- << Description << mode << Fn->getParamDecl(0) << NumFormalArgs;
+ << Description << mode << Fn->getParamDecl(0) << NumFormalArgs
+ << Fn->getParametersSourceRange();
else
S.Diag(Fn->getLocation(), diag::note_ovl_candidate_arity)
<< (unsigned)FnKindPair.first << (unsigned)FnKindPair.second
- << Description << mode << modeCount << NumFormalArgs;
+ << Description << mode << modeCount << NumFormalArgs
+ << Fn->getParametersSourceRange();
MaybeEmitInheritedConstructorNote(S, Found);
}
Index: clang/lib/Sema/SemaExpr.cpp
===================================================================
--- clang/lib/Sema/SemaExpr.cpp
+++ clang/lib/Sema/SemaExpr.cpp
@@ -6459,7 +6459,8 @@
// Emit the location of the prototype.
if (!TC && FDecl && !FDecl->getBuiltinID() && !IsExecConfig)
- Diag(FDecl->getLocation(), diag::note_callee_decl) << FDecl;
+ Diag(FDecl->getLocation(), diag::note_callee_decl)
+ << FDecl << FDecl->getParametersSourceRange();
return true;
}
@@ -6504,7 +6505,8 @@
// Emit the location of the prototype.
if (!TC && FDecl && !FDecl->getBuiltinID() && !IsExecConfig)
- Diag(FDecl->getLocation(), diag::note_callee_decl) << FDecl;
+ Diag(FDecl->getLocation(), diag::note_callee_decl)
+ << FDecl << FDecl->getParametersSourceRange();
// This deletes the extra arguments.
Call->shrinkNumArgs(NumParams);
Index: clang/docs/ReleaseNotes.rst
===================================================================
--- clang/docs/ReleaseNotes.rst
+++ clang/docs/ReleaseNotes.rst
@@ -364,6 +364,8 @@
- The Fix-It emitted for unused labels used to expand to the next line, which caused
visual oddities now that Clang shows more than one line of code snippet. This has
been fixed and the Fix-It now only spans to the end of the ``:``.
+- Clang now underlines the parameter list of function declaration when emitting
+ a note about the mismatch in the number of arguments.
Bug Fixes in This Version
-------------------------
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D153267.534348.patch
Type: text/x-patch
Size: 3830 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20230625/c96d8b6b/attachment-0001.bin>
More information about the cfe-commits
mailing list