Supports only a minimal subset of the project layout specification;
enough to work with the transformers produced by the CLI when building
an overlay database.
This adds the possibility to add a special `proc_macro.rs` source file
to QL tests, which will be generated into a `proc_macro` crate the
usual `lib` crate depends on.
This allow to define procedural macros in QL tests, and is here used to
move the `macro-expansion` integration test to be a language test
instead.
As the generated manifests involved were starting to get a bit complex,
they are now generated from a `mustache` template.
When skipping bodies in library code, we lose the information whether a
body was originally present. This can be important, for example when
determining whether a trait method has a default implementation.
With this change that information can be recovered via the
`hasImplementation` predicate.
This will skip all unexpanded entities in library extraction, where we
only really care about expanded things. This means skipping:
* the token tree of macro calls
* the unexpanded AST of attribute macros
In the latter case, in order to replace the single `Item` with its
expansion (which is a `MacroItems` entity), we wrap the `MacroItems` in
a dummy `MacroCall` with null path.
When analysing a repository with multiple separate but related sub-projects there is a
risk that some source file are extracted in library mode as well as source mode.
To prevent this we pre-fill 'processed_files' set with all source files, even though they have
not be processed yet, but are known to be processed later..
This prevents source file to be
The target file created by `cargo check` was causing problems in
language tests.
We might want to also ignore `target` by default in the production
indexing, but I'll leave that for further discussion.