summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp5
-rw-r--r--clang-tools-extra/test/clang-tidy/Inputs/modernize-loop-convert/structures.h11
-rw-r--r--clang-tools-extra/test/clang-tidy/modernize-loop-convert-extra.cpp21
3 files changed, 35 insertions, 2 deletions
diff --git a/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp b/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp
index ad2393a7f7a..f3dd15439d8 100644
--- a/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp
+++ b/clang-tools-extra/clang-tidy/modernize/LoopConvertCheck.cpp
@@ -337,8 +337,9 @@ static StringRef getStringFromRange(SourceManager &SourceMgr,
const LangOptions &LangOpts,
SourceRange Range) {
if (SourceMgr.getFileID(Range.getBegin()) !=
- SourceMgr.getFileID(Range.getEnd()))
- return nullptr;
+ SourceMgr.getFileID(Range.getEnd())) {
+ return StringRef(); // Empty string.
+ }
return Lexer::getSourceText(CharSourceRange(Range, true), SourceMgr,
LangOpts);
diff --git a/clang-tools-extra/test/clang-tidy/Inputs/modernize-loop-convert/structures.h b/clang-tools-extra/test/clang-tidy/Inputs/modernize-loop-convert/structures.h
index 9dd04f42b5a..24d0eebc587 100644
--- a/clang-tools-extra/test/clang-tidy/Inputs/modernize-loop-convert/structures.h
+++ b/clang-tools-extra/test/clang-tidy/Inputs/modernize-loop-convert/structures.h
@@ -176,4 +176,15 @@ struct RValueDerefContainer {
iterator begin() const;
iterator end() const;
};
+
+namespace Macros {
+
+struct MacroStruct {
+ int arr[10];
+};
+static MacroStruct *MacroSt;
+#define CONT MacroSt->
+
+} // namespace Macros
+
#endif // STRUCTURES_H
diff --git a/clang-tools-extra/test/clang-tidy/modernize-loop-convert-extra.cpp b/clang-tools-extra/test/clang-tidy/modernize-loop-convert-extra.cpp
index 67b40d60708..3bb4aaaff98 100644
--- a/clang-tools-extra/test/clang-tidy/modernize-loop-convert-extra.cpp
+++ b/clang-tools-extra/test/clang-tidy/modernize-loop-convert-extra.cpp
@@ -605,4 +605,25 @@ void different_type() {
}
}
+} // namespace SingleIterator
+
+
+namespace Macros {
+
+const int N = 10;
+int arr[N];
+
+void messing_with_macros() {
+ for (int i = 0; i < N; ++i) {
+ printf("Value: %d\n", arr[i]);
+ }
+ // CHECK-MESSAGES: :[[@LINE-3]]:3: warning: use range-based for loop instead
+ // CHECK-FIXES: for (auto & elem : arr) {
+ // CHECK-FIXES-NEXT: printf("Value: %d\n", elem);
+
+ for (int i = 0; i < N; ++i) {
+ printf("Value: %d\n", CONT arr[i]);
+ }
}
+
+} // namespace Macros
OpenPOWER on IntegriCloud