private static bool TryRemoveExistingEnumMembers( ISwitchExpressionOperation operation, Dictionary <long, ISymbol> enumMembers) { foreach (var arm in operation.Arms) { if (arm.Pattern is IConstantPatternOperation constantPattern) { var constantValue = constantPattern.Value.ConstantValue; if (!constantValue.HasValue) { // We had a case which didn't resolve properly. // Assume the switch is complete. return(false); } enumMembers.Remove(IntegerUtilities.ToInt64(constantValue.Value)); } } return(true); }
public static bool HasDefaultCase(ISwitchExpressionOperation operation) => operation.Arms.Any(a => IsDefault(a));
public virtual void VisitSwitchExpression(ISwitchExpressionOperation operation) { DefaultVisit(operation); }
protected sealed override ICollection <ISymbol> GetMissingEnumMembers( ISwitchExpressionOperation switchOperation ) => PopulateSwitchExpressionHelpers.GetMissingEnumMembers(switchOperation);
protected sealed override ITypeSymbol GetSwitchType( ISwitchExpressionOperation switchExpression ) => switchExpression.Value.Type ?? throw ExceptionUtilities.Unreachable;
protected sealed override ITypeSymbol GetSwitchType(ISwitchExpressionOperation switchExpression) => switchExpression.Value.Type;
protected sealed override bool HasDefaultCase(ISwitchExpressionOperation operation) => PopulateSwitchExpressionHelpers.HasDefaultCase(operation);
protected override bool IsSwitchTypeUnknown(ISwitchExpressionOperation operation) => operation.Value.Type is null;
protected override bool HasNullSwitchArm(ISwitchExpressionOperation switchOperation) => PopulateSwitchExpressionHelpers.HasNullSwitchArm(switchOperation);