/// AddFixItLocations - Add any individual user specified "fix-it" locations, /// and return true on success. static bool AddFixItLocations(CompilerInstance &CI, FixItRewriter &FixItRewrite) { const std::vector<ParsedSourceLocation> &Locs = CI.getFrontendOpts().FixItLocations; for (unsigned i = 0, e = Locs.size(); i != e; ++i) { const FileEntry *File = CI.getFileManager().getFile(Locs[i].FileName); if (!File) { CI.getDiagnostics().Report(diag::err_fe_unable_to_find_fixit_file) << Locs[i].FileName; return false; } RequestedSourceLocation Requested; Requested.File = File; Requested.Line = Locs[i].Line; Requested.Column = Locs[i].Column; FixItRewrite.addFixItLocation(Requested); } const std::string &OutputFile = CI.getFrontendOpts().OutputFile; if (Locs.empty() && !OutputFile.empty()) { // FIXME: we will issue "FIX-IT applied suggested code changes" for every // input, but only the main file will actually be rewritten. const std::vector<std::pair<FrontendOptions::InputKind, std::string> > &Inputs = CI.getFrontendOpts().Inputs; for (unsigned i = 0, e = Inputs.size(); i != e; ++i) { const FileEntry *File = CI.getFileManager().getFile(Inputs[i].second); assert(File && "Input file not found in FileManager"); RequestedSourceLocation Requested; Requested.File = File; Requested.Line = 0; Requested.Column = 0; FixItRewrite.addFixItLocation(Requested); } } return true; }
/// AddFixItLocations - Add any individual user specified "fix-it" locations, /// and return true on success. static bool AddFixItLocations(CompilerInstance &CI, FixItRewriter &FixItRewrite) { const std::vector<ParsedSourceLocation> &Locs = CI.getFrontendOpts().FixItLocations; for (unsigned i = 0, e = Locs.size(); i != e; ++i) { const FileEntry *File = CI.getFileManager().getFile(Locs[i].FileName); if (!File) { CI.getDiagnostics().Report(diag::err_fe_unable_to_find_fixit_file) << Locs[i].FileName; return false; } RequestedSourceLocation Requested; Requested.File = File; Requested.Line = Locs[i].Line; Requested.Column = Locs[i].Column; FixItRewrite.addFixItLocation(Requested); } return true; }