diff options
3 files changed, 17 insertions, 0 deletions
diff --git a/clang-tools-extra/modularize/PreprocessorTracker.cpp b/clang-tools-extra/modularize/PreprocessorTracker.cpp index a4bfd8b3b12..566e2f15a33 100644 --- a/clang-tools-extra/modularize/PreprocessorTracker.cpp +++ b/clang-tools-extra/modularize/PreprocessorTracker.cpp @@ -334,6 +334,12 @@ std::string getMacroUnexpandedString(clang::SourceRange Range, // Get the expansion for a macro instance, given the information // provided by PPCallbacks. +// FIXME: This doesn't support function-style macro instances +// passed as arguments to another function-style macro. However, +// since it still expands the inner arguments, it still +// allows modularize to effectively work with respect to macro +// consistency checking, although it displays the incorrect +// expansion in error messages. std::string getMacroExpandedString(clang::Preprocessor &PP, llvm::StringRef MacroName, const clang::MacroInfo *MI, @@ -1214,6 +1220,9 @@ void PreprocessorCallbacks::MacroExpands(const clang::Token &MacroNameTok, clang::SourceRange Range, const clang::MacroArgs *Args) { clang::SourceLocation Loc = Range.getBegin(); + // Ignore macro argument expansions. + if (!Loc.isFileID()) + return; clang::IdentifierInfo *II = MacroNameTok.getIdentifierInfo(); const clang::MacroInfo *MI = PP.getMacroInfo(II); std::string MacroName = II->getName().str(); diff --git a/clang-tools-extra/test/modularize/Inputs/NestedMacro.h b/clang-tools-extra/test/modularize/Inputs/NestedMacro.h new file mode 100644 index 00000000000..2cfc92c081b --- /dev/null +++ b/clang-tools-extra/test/modularize/Inputs/NestedMacro.h @@ -0,0 +1,5 @@ +// Verification of fix for nested macro. + +#define FUNCMACROINNER(a) a +#define FUNCMACROOUTER(b, c) FUNCMACROINNER(b) + FUNCMACROINNER(c) +int FuncMacroValue = FUNCMACROOUTER(1, 2); diff --git a/clang-tools-extra/test/modularize/NoProblemsNestedMacro.modularize b/clang-tools-extra/test/modularize/NoProblemsNestedMacro.modularize new file mode 100644 index 00000000000..a1c627d2e72 --- /dev/null +++ b/clang-tools-extra/test/modularize/NoProblemsNestedMacro.modularize @@ -0,0 +1,3 @@ +# RUN: modularize %s -x c++ + +Inputs/NestedMacro.h |