Author: jtsoftware Date: Mon Mar 21 18:05:14 2016 New Revision: 264001 URL: http://llvm.org/viewvc/llvm-project?rev=264001&view=rev Log: Fixed some cases in the modularize assistant mode where header file names didn't translate to valid module names.
Modified: clang-tools-extra/trunk/modularize/ModuleAssistant.cpp clang-tools-extra/trunk/test/modularize/NoProblemsAssistant.modularize Modified: clang-tools-extra/trunk/modularize/ModuleAssistant.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/modularize/ModuleAssistant.cpp?rev=264001&r1=264000&r2=264001&view=diff ============================================================================== --- clang-tools-extra/trunk/modularize/ModuleAssistant.cpp (original) +++ clang-tools-extra/trunk/modularize/ModuleAssistant.cpp Mon Mar 21 18:05:14 2016 @@ -99,7 +99,7 @@ bool Module::output(llvm::raw_fd_ostream E = HeaderFileNames.end(); I != E; ++I) { OS.indent(Indent); - if (IsProblem) + if (IsProblem || strstr((*I).c_str(), ".inl")) OS << "exclude header \"" << *I << "\"\n"; else OS << "header \"" << *I << "\"\n"; @@ -157,6 +157,18 @@ ensureNoCollisionWithReservedName(llvm:: return SafeName; } +// Convert module name to a non-keyword. +// Prepends a '_' to the name if and only if the name is a keyword. +static std::string +ensureVaidModuleName(llvm::StringRef MightBeInvalidName) { + std::string SafeName = MightBeInvalidName; + std::replace(SafeName.begin(), SafeName.end(), '-', '_'); + std::replace(SafeName.begin(), SafeName.end(), '.', '_'); + if (isdigit(SafeName[0])) + SafeName = "_" + SafeName; + return SafeName; +} + // Add one module, given a header file path. static bool addModuleDescription(Module *RootModule, llvm::StringRef HeaderFilePath, @@ -195,6 +207,7 @@ static bool addModuleDescription(Module continue; std::string Stem = llvm::sys::path::stem(*I); Stem = ensureNoCollisionWithReservedName(Stem); + Stem = ensureVaidModuleName(Stem); Module *SubModule = CurrentModule->findSubModule(Stem); if (!SubModule) { SubModule = new Module(Stem, IsProblemFile); Modified: clang-tools-extra/trunk/test/modularize/NoProblemsAssistant.modularize URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/test/modularize/NoProblemsAssistant.modularize?rev=264001&r1=264000&r2=264001&view=diff ============================================================================== --- clang-tools-extra/trunk/test/modularize/NoProblemsAssistant.modularize (original) +++ clang-tools-extra/trunk/test/modularize/NoProblemsAssistant.modularize Mon Mar 21 18:05:14 2016 @@ -7,6 +7,7 @@ SubModule1/Header1.h SubModule1/Header2.h SubModule2/Header3.h SubModule2/Header4.h +SubModule2/Header5-dash.dot.h SubModule2.h # CHECK: // Output/NoProblemsAssistant.txt @@ -39,6 +40,10 @@ SubModule2.h # CHECK-NEXT: header "SubModule2/Header4.h" # CHECK-NEXT: export * # CHECK-NEXT: } +# CHECK-NEXT: module Header5_dash_dot { +# CHECK-NEXT: header "SubModule2/Header5-dash.dot.h" +# CHECK-NEXT: export * +# CHECK-NEXT: } # CHECK-NEXT: header "SubModule2.h" # CHECK-NEXT: export * # CHECK-NEXT: } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits