/// <summary> /// Apply modifies to a temporary result group. /// Items to be modified are virtual-cloned so the original isn't changed. /// </summary> private void ApplyModifies(BuildItemGroup result, Dictionary <BuildItem, Dictionary <string, string> > allModifies) { // Clone, because we're modifying actual items, and this would otherwise be visible to other batches, // and would be "published" even if a target fails. // FUTURE - don't need to clone here for non intrinsic tasks, but at present, they don't do modifies // Store the clone, in case we're asked to modify or remove it later (we will record it against the real item) if (cloneTable == null) { cloneTable = new Dictionary <BuildItem, BuildItem>(); } foreach (KeyValuePair <BuildItem, Dictionary <string, string> > modify in allModifies) { BuildItem clone = result.ModifyItemAfterCloningUsingVirtualMetadata(modify.Key, modify.Value); // This will be null if the item wasn't in the result group, ie, it had been removed after being modified if (clone != null) { #if DEBUG ErrorUtilities.VerifyThrow(!cloneTable.ContainsKey(clone), "Should be new, not already in table!"); #endif cloneTable[clone] = modify.Key; } } }
/// <summary> /// Apply modifies to a temporary result group. /// Items to be modified are virtual-cloned so the original isn't changed. /// </summary> private void ApplyModifies(BuildItemGroup result, Dictionary<BuildItem, Dictionary<string, string>> allModifies) { // Clone, because we're modifying actual items, and this would otherwise be visible to other batches, // and would be "published" even if a target fails. // FUTURE - don't need to clone here for non intrinsic tasks, but at present, they don't do modifies // Store the clone, in case we're asked to modify or remove it later (we will record it against the real item) if (cloneTable == null) { cloneTable = new Dictionary<BuildItem, BuildItem>(); } foreach (KeyValuePair<BuildItem, Dictionary<string, string>> modify in allModifies) { BuildItem clone = result.ModifyItemAfterCloningUsingVirtualMetadata(modify.Key, modify.Value); // This will be null if the item wasn't in the result group, ie, it had been removed after being modified if (clone != null) { #if DEBUG ErrorUtilities.VerifyThrow(!cloneTable.ContainsKey(clone), "Should be new, not already in table!"); #endif cloneTable[clone] = modify.Key; } } }