Sorry for taking so long to respond to this review. I've been heads down
trying to prepare D1545 for review.
I'm going to break this down into two cases:
=== 1. Explicitly provided files ===
If a user explicitly lists a source on the command-line it should be
transformed. The only time I see that it wouldn't be is if there's an explicit
-exclude that would exclude that source. In that case, there should be a
warning. If the user explicitly lists files, **only** those files should be
transformed. If a compilation database is explicitly provided or auto-detected
from the first source file, we still only transform those specific files. In
the situation of a fixed compilation database, the user needs to provide files
explicitly so the same logic applies.
-inlude has no effect on which sources to process. It only affects which
other files (i.e. headers) we can change while transforming the given sources.
-exclude explicitly excludes files from being changed and to be consistent,
this includes even sources. As I mentioned above, a warning should be given if
an explicitly provided file is going to be excluded because of an -exclude.
=== 2. No explicitly provided files ===
This is basically the case of the user providing -p since there's no other
way to run the migrator if you don't provide files. I think I want to change
slightly what I said earlier about priming the Include/Exclude info. I'm open
to suggestions but here's somewhere to start. I think we all agree the default
behaviour should be to transform all files in the compilation database. So that
means populating the sources list based on info from the compilation database.
What do we do with include/exclude info? Two situations:
# No -include/-exclude provided. One option is to transform all sources but
don't make changes to any other files (i.e. don't prime include/exclude info).
Is that useful? Another option is prime include/exclude with the directories
the sources live in, hopefully including other files the sources might use
(i.e. headers). This wouldn't work for LLVM since headers don't live beside
sources. I'm not really a big fan of this option. A third option is to allow
changes to any other files. This is dangerous and so probably not a good idea.
That leaves us with option #1 or forcing user to provide -include/-exclude info
to specify what they want.
# -include/-exclude provided. Thinking of the LLDB case it sounds like we
want something like this:
cpp11-migrate -p compdb_location -include llmv/tools/clang/tools/lldb
This implies that if the user provides -include/-exclude, we start with an
empty source list and include only those sources covered by -include/-exclude.
Therefore, we do no priming of include/exclude and use only what's provided
explicitly on the command-line. The include/exclude info is then used to
determine which sources to transform.
http://llvm-reviews.chandlerc.com/D1517
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits