/// <summary> /// Returns the set of output files or directories that match the filter. /// </summary> /// <remarks> /// NOTE: ALL FILTER OPERATION MUST BE IDEMPOTENT BECAUSE THE RESULTS ARE CACHED. /// </remarks> public IReadOnlySet <FileOrDirectoryArtifact> FilterOutputs( IPipFilterContext context, bool negate = false, IList <PipId> constrainingPips = null) { if (negate || constrainingPips != null) { return(FilterOutputsCore(context, negate, constrainingPips)); } if (context.TryGetCachedOutputs(this, out IReadOnlySet <FileOrDirectoryArtifact> result)) { return(result); } result = FilterOutputsCore(context); context.CacheOutputs(this, result); return(result); }