Clone Tools
  • last updated a few seconds ago
Constraints: committers
Constraints: files
Constraints: dates
Force a particular version of the native tool chain to be used in cross-version test

Apply `Explicit type can be replaced with <>` inspection the whole project

  1. … 909 more files in changeset.
Change few private methods to static

  1. … 251 more files in changeset.
Add tooling API test coverage for multiple architecture

Change the C++ tooling model builder so that it does not attempt to resolve task dependencies to infer how to build the various C++ binaries, Instead add properties to the C++ project model to allow the builder to query these tasks and build logic to explicitly define what they should be.

  1. … 15 more files in changeset.
Change the contract through which a task finalization action is declared when visiting build dependencies, so that it is similar to how other dependencies are visited.

This change moves some complexity out of the dependency resolution artifact types and into the task dependency infrastructure, which is a better home for it and where it can be simplified.

  1. … 10 more files in changeset.
Avoid locking the target project of project dependencies during task execution.

During work graph calculation, add an action that runs immediately after the producing task of an artifact completed that caclculates the dependency resolution metadata for that artifact. This happens before the consuming tasks are started, and so is available without locking when those tasks execute. Previously this calculation was done by consuming tasks, and they would need to lock the target project to do this.

This strategy works only for those tasks that declare that they will need these files (e.g. are declared as inputs in some form). For tasks that do not declare these inputs (possibly because there is no easy way to do so yet), the action is not added and the locking will still occur when the consuming task executes.

The implementation bolts a new concept onto the task nodes, as an increment towards making these actions real nodes in the graph that can be scheduled in the normal way.

  1. … 27 more files in changeset.
Rework task dependency inference so that `Provider` implementations use the same `TaskDependencyContainer` interface that most other things use to declare their producer task to the task resolution infrastructure, rather than having special knowledge sprinkled around various places.

Cleaned up a bunch of `Provider` and `Property` implementations so that more logic is reused rather than reimplemented.

  1. … 30 more files in changeset.
Support propagation of the producer task for provider instances that are created using ``.

Now, when a provider represents a task or task output, whether mapped or not, that task is taken as the producer of the value and the mapping function is not called. Otherwise, the value of the provider is unpacked and resolved, as it previously was.

Rework the protocol by which providers communicate their build dependencies to consumers.

  1. … 34 more files in changeset.
Fix C++ tooling model tests to work on Linux and Windows.

  1. … 1 more file in changeset.
Rename 'toolingBuildersNative' project to 'toolingNative' to work around limitations in CI infrastructure.

  1. … 25 more files in changeset.