[PATCH] D75492: [modernize-use-using] Don't diagnose typedefs in `extern "C"` DeclContexts
George Burgess IV via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Mar 2 16:55:36 PST 2020
george.burgess.iv created this revision.
george.burgess.iv added a reviewer: aaron.ballman.
If code is shared between C and C++, converting a `typedef` to a `using` isn't possible. Being more conservative about emitting these lints in `extern "C"` blocks seems like a good compromise to me.
https://reviews.llvm.org/D75492
Files:
clang-tools-extra/clang-tidy/modernize/UseUsingCheck.cpp
clang-tools-extra/test/clang-tidy/checkers/modernize-use-using.cpp
Index: clang-tools-extra/test/clang-tidy/checkers/modernize-use-using.cpp
===================================================================
--- clang-tools-extra/test/clang-tidy/checkers/modernize-use-using.cpp
+++ clang-tools-extra/test/clang-tidy/checkers/modernize-use-using.cpp
@@ -278,3 +278,7 @@
// CHECK-MESSAGES: :[[@LINE-1]]:1: warning: use 'using' instead of 'typedef'
// CHECK-FIXES: using EnumT2_CheckTypedefImpactFromAnotherFile = enum { ea2, eb2 };
+extern "C" {
+typedef int Type;
+// No messages expected, since this code may be shared verbatim with C.
+}
Index: clang-tools-extra/clang-tidy/modernize/UseUsingCheck.cpp
===================================================================
--- clang-tools-extra/clang-tidy/modernize/UseUsingCheck.cpp
+++ clang-tools-extra/clang-tidy/modernize/UseUsingCheck.cpp
@@ -48,6 +48,9 @@
if (StartLoc.isMacroID() && IgnoreMacros)
return;
+ if (MatchedDecl->getDeclContext()->isExternCContext())
+ return;
+
static const char *UseUsingWarning = "use 'using' instead of 'typedef'";
// Warn at StartLoc but do not fix if there is macro or array.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D75492.247759.patch
Type: text/x-patch
Size: 1127 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200303/034d5b3f/attachment.bin>
More information about the cfe-commits
mailing list