Finalize the value of any task `@Input` property whose getter returns a property instance, at the start of execution of the task.
This means that the property value will not change once the task has started execution, so that the same value is always used during fingerprinting, cache key calculation, validation, when queried by a task action, and so on.
This behaviour only applies to `@Input` properties in this commit. This was just a place to start. Other properties will be added in later commits.
Changes to the property are ignored once the value is finalized implicitly in this way and generate a deprecation warning instead of failing, as would happen after `finalizeValue()` is called. This allows a migration path for task types that can add a new property to represent some input and keep their existing lenient (but now deprecated) behaviour for an existing property backed by the new property. It might prove better to flip this around, let's see.
10 Oct 18 c2b96c1e20c9ab3093de71cd95eec8f48b69532b
Improve error reporting in case no matching dynamic version is found
This commit improves rendering of errors in case resolution fails because
all versions in a dynamic range are evicted, and that at least one of the
evicted versions was evicted because of attribute matching. The error will
now report the attributes on each tested version, as well as the requested
For this, the module not found exception has been updated to carry more
context, and now makes use of the tree formatter for consistency with other
exceptions in the codebase.
30 Apr 18 d4e0812e0e93e36a8ae995fecf002414329dbf20