protected override VisitResult Visit(MethodGroupChange methodGroupChange, MethodGroupChangeContext methodGroupChangeContext) { NextAction nextAction = Visit(_breakingChangeDefinitionsProvider.BreakingMethodGroupChanges, methodGroupChange, methodGroupChange.ChangeType, methodGroupChangeContext); return(nextAction == NextAction.VisitChildTypes ? base.Visit(methodGroupChange, methodGroupChangeContext) : nextAction == NextAction.VisitNextSibling ? VisitResult.Continue : VisitResult.Stop); }
public static IEnumerable <MethodChange> GetAllMethodChangesOfType(this MethodGroupChange methodGroupChange, ChangeType changeType) { return(methodGroupChange.ChangeType == changeType ? methodGroupChange.MethodChanges : methodGroupChange.ChangeType == ChangeType.Matched ? methodGroupChange.MethodChanges.Where(x => x.ChangeType == changeType) : new MethodChange[0]); }
protected virtual VisitResult Visit(MethodGroupChange methodGroupChange, MethodGroupChangeContext methodGroupChangeContext) { var methodChangeContext = new MethodChangeContext( methodGroupChangeContext.AssemblyChanges, methodGroupChangeContext.ParentModuleChange, methodGroupChangeContext.ParentTypeChange, methodGroupChange); return(methodGroupChange.MethodChanges.All(methodChange => Visit(methodChange, methodChangeContext) == VisitResult.Continue) ? VisitResult.Continue : VisitResult.Stop); }
public ParameterChangeContext(AssemblyChanges assemblyChanges, ModuleChange parentModuleChange, TypeChange parentTypeChange, MethodGroupChange parentMethodGroupChange, MethodChange parentMethodChange) : base(assemblyChanges, parentModuleChange, parentTypeChange, parentMethodGroupChange) { _parentMethodChange = parentMethodChange; }
public static Tuple <MethodDefinition, ParameterDefinition[]>[] GetNewParametersByOriginalMethod(this MethodDefinition method, MethodGroupChange methodGroupChange) { var existingMethods = methodGroupChange.MethodChanges .Where(x => x.ChangeType == ChangeType.Matched) // Only select methods that are still matched (I.e. that haven't been removed) .Select(x => x.Method); var methodParameterSet = new HashSet <ParameterDefinition>(method.Parameters); return(existingMethods .Select(existingMethod => Tuple.Create( existingMethod, methodParameterSet.Except(new HashSet <ParameterDefinition>(existingMethod.Parameters), new ParameterDefinitionComparer()).ToArray())) .ToArray()); }
public static IEnumerable <ParameterDefinition> GetNewParameters(this MethodChange methodChange, MethodGroupChange methodGroupChange) { Tuple <MethodDefinition, ParameterDefinition[]>[] newParametersByOriginalMethod = methodChange.Method.GetNewParametersByOriginalMethod(methodGroupChange); return(newParametersByOriginalMethod .SelectMany(x => x.Item2) .Distinct(new ParameterDefinitionComparer())); }