angelgarcia updated this revision to Diff 32688. angelgarcia added a comment.
Add a test. http://reviews.llvm.org/D12186 Files: clang-tidy/modernize/LoopConvertCheck.cpp test/clang-tidy/Inputs/modernize-loop-convert/structures.h test/clang-tidy/modernize-loop-convert-extra.cpp Index: test/clang-tidy/modernize-loop-convert-extra.cpp =================================================================== --- test/clang-tidy/modernize-loop-convert-extra.cpp +++ test/clang-tidy/modernize-loop-convert-extra.cpp @@ -605,4 +605,25 @@ } } +} // 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 Index: test/clang-tidy/Inputs/modernize-loop-convert/structures.h =================================================================== --- test/clang-tidy/Inputs/modernize-loop-convert/structures.h +++ test/clang-tidy/Inputs/modernize-loop-convert/structures.h @@ -176,4 +176,15 @@ iterator begin() const; iterator end() const; }; + +namespace Macros { + +struct MacroStruct { + int arr[10]; +}; +static MacroStruct *MacroSt; +#define CONT MacroSt-> + +} // namespace Macros + #endif // STRUCTURES_H Index: clang-tidy/modernize/LoopConvertCheck.cpp =================================================================== --- clang-tidy/modernize/LoopConvertCheck.cpp +++ clang-tidy/modernize/LoopConvertCheck.cpp @@ -337,8 +337,9 @@ 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);
Index: test/clang-tidy/modernize-loop-convert-extra.cpp =================================================================== --- test/clang-tidy/modernize-loop-convert-extra.cpp +++ test/clang-tidy/modernize-loop-convert-extra.cpp @@ -605,4 +605,25 @@ } } +} // 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 Index: test/clang-tidy/Inputs/modernize-loop-convert/structures.h =================================================================== --- test/clang-tidy/Inputs/modernize-loop-convert/structures.h +++ test/clang-tidy/Inputs/modernize-loop-convert/structures.h @@ -176,4 +176,15 @@ iterator begin() const; iterator end() const; }; + +namespace Macros { + +struct MacroStruct { + int arr[10]; +}; +static MacroStruct *MacroSt; +#define CONT MacroSt-> + +} // namespace Macros + #endif // STRUCTURES_H Index: clang-tidy/modernize/LoopConvertCheck.cpp =================================================================== --- clang-tidy/modernize/LoopConvertCheck.cpp +++ clang-tidy/modernize/LoopConvertCheck.cpp @@ -337,8 +337,9 @@ 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);
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits