Adds a flag to ClangTidyContext that is used to indicate to checks that fixes will only be applied one at a time.
This is to indicate to checks that each fix emitted should not depend on any other fixes emitted across the translation unit.
I've currently implemented the IncludeInserter, LoopConvertCheck and PreferMemberInitializerCheck to use these support these modes.
Reasoning behind this is in use cases like clangd it's only possible to apply one fix at a time.
For include inserter checks, the include is only added once for the first diagnostic that requires it, this will result in subsequent fixes not having the included needed.
A similar issue is seen in the PreferMemberInitializerCheck where the : will only be added for the first member that needs fixing.
Fixes emitted in StandaloneDiagsMode will likely result in malformed code if they are applied all together, conversely fixes currently emitted may result in malformed code if they are applied one at a time.
For this reason invoking clang-tidy from the binary will always with StandaloneDiagsMode disabled, However using it as a library its possible to select the mode you wish to use, clangd always selects StandaloneDiagsMode.
This is an example of the current behaviour failing
struct Foo { int A, B; Foo(int D, int E) { A = D; B = E; // Fix Here } };
Incorrectly transformed to:
struct Foo { int A, B; Foo(int D, int E), B(E) { A = D; // Fix Here } };
In StandaloneDiagsMode, it gets transformed to:
struct Foo { int A, B; Foo(int D, int E) : B(E) { A = D; // Fix Here } };
Very minor, but I think this should be run.