In r247832. > On Sep 12, 2015, at 5:19 AM, Manuel Klimek <kli...@google.com> wrote: > > Test would be awesome :) Thx! > > On Fri, Sep 11, 2015 at 10:44 PM Argyrios Kyrtzidis <kyrtzi...@apple.com > <mailto:kyrtzi...@apple.com>> wrote: > In r247468, thanks for reviewing! > > >> On Sep 11, 2015, at 10:24 AM, Manuel Klimek via cfe-commits >> <cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org>> wrote: >> > >> Ok, looked at the original patch again, and if we're fixing the >> FixedCompilationDatabase to only insert the file when it actually produces a >> CompileCommand it seems to be fine. >> >> On Fri, Sep 11, 2015 at 6:32 PM Argyrios Kyrtzidis <kyrtzi...@apple.com >> <mailto:kyrtzi...@apple.com>> wrote: >>> On Sep 11, 2015, at 12:21 AM, Manuel Klimek <kli...@google.com >>> <mailto:kli...@google.com>> wrote: >>> >>> On Thu, Sep 10, 2015 at 8:36 PM Argyrios Kyrtzidis <kyrtzi...@apple.com >>> <mailto:kyrtzi...@apple.com>> wrote: >>>> On Sep 10, 2015, at 1:48 AM, Manuel Klimek <kli...@google.com >>>> <mailto:kli...@google.com>> wrote: >>>> >>>> @@ -179,11 +185,13 @@ public: >>>> /// \param Directory The base directory used in the >>>> FixedCompilationDatabase. >>>> static FixedCompilationDatabase *loadFromCommandLine(int &Argc, >>>> const char *const >>>> *Argv, >>>> - Twine Directory = >>>> "."); >>>> + Twine Directory = >>>> ".", >>>> + Twine File = >>>> Twine()); >>>> >>>> A fixed compilation database returns the same command lines for all files, >>>> thus having a file in the function seems strange. >>> >>> Ah ok, thanks for clarifying. >>> >>>> >>>> What exactly is the use case? So far, the compilation database has been >>>> designed for 2 use cases: >>>> 1. for a file, get the compile commands; the user already knows the file, >>>> no need to get the file >>>> 2. get all compile commands; for that, we have the getAllFiles() method, >>>> so a user can get all known files (for compilation databases that support >>>> that), and then get the compile command line. >>> >>> It’s #2, I want to get all compile commands. But it seems really strange to >>> me that the ‘file’ starts as a property of the compile command in the json >>> file but then it gets dropped and I need to do work to re-associate the >>> files with the compile commands again. >>> >>> The JSON file format is one possible implementation for the >>> compilation-database interface. The FixedCompilationDatabase is another >>> one, that doesn't have any information on files. >>> >>> I need to get a list of all the files and then for each one do a lookup to >>> get the associated commands. I then have to maintain this association >>> myself, passing a command along with its file separately or the structure >>> that keeps track of the association. >>> >>> It seems simpler to me to include the file that was associated with the >>> command (if the compilation database supports that) along with the command, >>> is there a downside I’m missing ? >>> >>> Well, to me, it's a design question - if it also makes sense to have a >>> CompileCommand without a file associated with it, putting the file in >>> there, while convenient, is a design smell. >> >> It can be optional to communicate that it may not be there. Note that, IMO, >> having multiple files and compile commands for them is the overwhelmingly >> most common use of the compilation database. >> >>> That said, I'm happy to be convinced that I'm wrong :) I guess I don't see >>> yet that keeping track of the files outside is more than one line of extra >>> code. >> >> Not sure what one line this is, I have to declare a map and then populate >> it, no ? And to do it in c-index-test it would take way more that one line. >> But it is also beyond populating a map, this has an effect on APIs using a >> CompileCommand. For example: >> >> void doSomethingWithCompileCommand(const CompileCommand &cmd); >> >> Ah it would be useful to know the file that this command was associated with: >> >> void doSomethingWithCompileCommand(const CompileCommand &cmd, StringRef >> filename); >> >> What do I have now ? This is a function taking a command and a string for >> the filename separately. >> Is this flexibility useful ? Does it make sense to pass any filename there ? >> No there’s only one filename that the command was associated with so this >> ‘flexibility’ only increases the complexity of using the function. And this >> can propagate to other function’s callees. >> This seems like a design smell to me. >> >>> >>> Cheers, >>> /Manuel >>> >>> >>>> >>>> Thoughts? >>>> /Manuel >>>> >>>> On Wed, Sep 9, 2015 at 9:36 PM Argyrios Kyrtzidis <kyrtzi...@apple.com >>>> <mailto:kyrtzi...@apple.com>> wrote: >>>> Hi, >>>> >>>> The attached patch exposes the ‘file’ entry in a compilation database >>>> command, via the CompileCommand structure. > >> _______________________________________________ >> cfe-commits mailing list >> cfe-commits@lists.llvm.org <mailto:cfe-commits@lists.llvm.org> >> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >> <http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits> >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits