[PATCH] D14204: Fix crash in redundant-void-arg check.
Angel Garcia via cfe-commits
cfe-commits at lists.llvm.org
Mon Nov 2 03:29:43 PST 2015
angelgarcia updated this revision to Diff 38889.
angelgarcia added a comment.
Sorry, I forgot. That case works just fine.
http://reviews.llvm.org/D14204
Files:
clang-tidy/modernize/RedundantVoidArgCheck.cpp
test/clang-tidy/modernize-redundant-void-arg.cpp
Index: test/clang-tidy/modernize-redundant-void-arg.cpp
===================================================================
--- test/clang-tidy/modernize-redundant-void-arg.cpp
+++ test/clang-tidy/modernize-redundant-void-arg.cpp
@@ -417,3 +417,19 @@
// CHECK-MESSAGES: [[@LINE-2]]:45: warning: {{.*}} in lambda expression
// CHECK-FIXES: {{^ }}auto void_returner = []() -> void (*)() { return f1; };{{$}}
}
+
+#define M(x) x
+
+M(void inmacro(void) {})
+// CHECK-MESSAGES: :[[@LINE-1]]:16: warning: {{.*}} in function definition
+// CHECK-FIXES: M(void inmacro() {})
+
+#define F(A, B) \
+ struct F_##A##_##B { \
+ F_##A##_##B(void); \
+ }; \
+ F_##A##_##B::F_##A##_##B(void)
+
+F(Foo, Bar) {
+
+}
Index: clang-tidy/modernize/RedundantVoidArgCheck.cpp
===================================================================
--- clang-tidy/modernize/RedundantVoidArgCheck.cpp
+++ clang-tidy/modernize/RedundantVoidArgCheck.cpp
@@ -47,8 +47,8 @@
void RedundantVoidArgCheck::registerMatchers(MatchFinder *Finder) {
Finder->addMatcher(functionDecl(isExpansionInMainFile(), parameterCountIs(0),
- unless(isImplicit()),
- unless(isExternC())).bind(FunctionId),
+ unless(isImplicit()), unless(isExternC()))
+ .bind(FunctionId),
this);
Finder->addMatcher(typedefDecl(isExpansionInMainFile()).bind(TypedefId),
this);
@@ -77,9 +77,10 @@
cxxReinterpretCastExpr(isExpansionInMainFile(), CastDestinationIsFunction)
.bind(NamedCastId),
this);
- Finder->addMatcher(cxxConstCastExpr(isExpansionInMainFile(),
- CastDestinationIsFunction).bind(NamedCastId),
- this);
+ Finder->addMatcher(
+ cxxConstCastExpr(isExpansionInMainFile(), CastDestinationIsFunction)
+ .bind(NamedCastId),
+ this);
Finder->addMatcher(lambdaExpr(isExpansionInMainFile()).bind(LambdaId), this);
}
@@ -128,11 +129,14 @@
void RedundantVoidArgCheck::removeVoidArgumentTokens(
const ast_matchers::MatchFinder::MatchResult &Result, SourceRange Range,
StringRef GrammarLocation) {
- std::string DeclText =
- Lexer::getSourceText(CharSourceRange::getTokenRange(Range),
- *Result.SourceManager,
- Result.Context->getLangOpts()).str();
- Lexer PrototypeLexer(Range.getBegin(), Result.Context->getLangOpts(),
+ CharSourceRange CharRange = Lexer::makeFileCharRange(
+ CharSourceRange::getTokenRange(Range), *Result.SourceManager,
+ Result.Context->getLangOpts());
+
+ std::string DeclText = Lexer::getSourceText(CharRange, *Result.SourceManager,
+ Result.Context->getLangOpts())
+ .str();
+ Lexer PrototypeLexer(CharRange.getBegin(), Result.Context->getLangOpts(),
DeclText.data(), DeclText.data(),
DeclText.data() + DeclText.size());
enum TokenState {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D14204.38889.patch
Type: text/x-patch
Size: 3123 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20151102/64424c4d/attachment.bin>
More information about the cfe-commits
mailing list