Example #1
0
        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);
        }
Example #2
0
 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]);
 }
Example #3
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);
        }
Example #4
0
 public ParameterChangeContext(AssemblyChanges assemblyChanges, ModuleChange parentModuleChange, TypeChange parentTypeChange, MethodGroupChange parentMethodGroupChange, MethodChange parentMethodChange)
     : base(assemblyChanges, parentModuleChange, parentTypeChange, parentMethodGroupChange)
 {
     _parentMethodChange = parentMethodChange;
 }
Example #5
0
        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());
        }
Example #6
0
        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()));
        }