public BreakingChangeDefinitionsProvider( IBreakingChangeDefinitions <TypeChange, TypeChangeContext> breakingTypeChanges, IBreakingChangeDefinitions <MethodGroupChange, MethodGroupChangeContext> breakingMethodGroupChanges, IBreakingChangeDefinitions <MethodChange, MethodChangeContext> breakingMethodChanges, IBreakingChangeDefinitions <ParameterChange, ParameterChangeContext> breakingParameterChanges) { _breakingTypeChanges = breakingTypeChanges; _breakingMethodGroupChanges = breakingMethodGroupChanges; _breakingMethodChanges = breakingMethodChanges; _breakingParameterChanges = breakingParameterChanges; }
private NextAction Visit <TChange, TChangeContext>( IBreakingChangeDefinitions <TChange, TChangeContext> breakingChangeDefinitions, TChange typeChange, ChangeType changeType, TChangeContext typeChangeContext) { ChangesResult result = EvaluateAndStoreBreakingChanges(breakingChangeDefinitions, typeChange, typeChangeContext); if (result == ChangesResult.NoBreakingChanges && changeType == ChangeType.Matched) { return(NextAction.VisitChildTypes); } return((StopOnFirstBreakingChange && result == ChangesResult.SomeBreakingChanges) ? NextAction.Stop : NextAction.VisitNextSibling); }
private ChangesResult EvaluateAndStoreBreakingChanges <TChange, TChangeContext>( IBreakingChangeDefinitions <TChange, TChangeContext> breakingChangeDefinitions, TChange change, TChangeContext changeContext) { var breakingChanges = breakingChangeDefinitions.GetBreakingChanges(change, changeContext); if (StopOnFirstBreakingChange) { var breakingChange = breakingChanges.FirstOrDefault(); if (breakingChange != null) { _breakingChanges.Add(breakingChange); return(ChangesResult.SomeBreakingChanges); } return(ChangesResult.NoBreakingChanges); } _breakingChanges.AddRange(breakingChanges); return(breakingChanges.Any() ? ChangesResult.SomeBreakingChanges : ChangesResult.NoBreakingChanges); }