[clangd] Introduce config compilation for External blocks
authorKadir Cetinkaya <kadircet@google.com>
Tue, 6 Oct 2020 12:21:42 +0000 (13:21 +0100)
committerKadir Cetinkaya <kadircet@google.com>
Sun, 22 Nov 2020 19:59:37 +0000 (20:59 +0100)
commitc9776c8d4ef7c1d69b6d74b81627c4028396e7c1
treee63fc469dd281c41be416b49136ad00217ba3e15
parent359e2f988dc560d519c91d3ee96a2ea99983f5d4
[clangd] Introduce config compilation for External blocks

Compilation logic for External blocks. A few of the high level points:
- Requires exactly one-of File/Server at a time:
  - Server is ignored in case of both, with a warning.
  - Having none is an error, would render ExternalBlock void.
- Ensures mountpoint is an absolute path:
  - Interprets it as relative to FragmentDirectory.
  - Defaults to FragmentDirectory when empty.
- Marks Background as Skip.

Depends on D90748.

Differential Revision: https://reviews.llvm.org/D90749
clang-tools-extra/clangd/Config.h
clang-tools-extra/clangd/ConfigCompile.cpp
clang-tools-extra/clangd/unittests/ConfigCompileTests.cpp