[sourcekit] Use the driver to parse command line arguments

Stop parsing frontend arguments directly and use the driver instead. The
most intersting part of this change is that it forces us to consider
whether our compiler invocation will have inputs or not.  We have
several kinds of requests that need to create a compiler instance, but
not parse any inputs (interface-generation, doc-info, and indexing when
operating on a module instead of source files).

Incidentally, add an error when trying to do doc-info on multiple source
files. This was already very broken (assertion failures and bogus source
locations), so add an error for it.

rdar://problem/17897287
This commit is contained in:
Ben Langmuir
2018-01-31 15:26:12 -08:00
parent 368e25ec05
commit 72bde687e4
10 changed files with 98 additions and 72 deletions

View File

@@ -1766,7 +1766,8 @@ void SwiftEditorDocument::parse(ImmutableTextSnapshotRef Snapshot,
Impl.SemanticInfo->getInvocation()->applyTo(CompInv);
Impl.SemanticInfo->getInvocation()->raw(Args, PrimaryFile);
} else {
ArrayRef<const char *> Args;
SmallVector<const char *, 1> Args;
Args.push_back(Impl.FilePath.c_str()); // Input
std::string Error;
// Ignore possible error(s)
Lang.getASTManager().