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);
        }
예제 #2
0
 public static bool HasDefaultCase(ISwitchExpressionOperation operation)
 => operation.Arms.Any(a => IsDefault(a));
예제 #3
0
 public virtual void VisitSwitchExpression(ISwitchExpressionOperation operation)
 {
     DefaultVisit(operation);
 }
예제 #4
0
 protected sealed override ICollection <ISymbol> GetMissingEnumMembers(
     ISwitchExpressionOperation switchOperation
     ) => PopulateSwitchExpressionHelpers.GetMissingEnumMembers(switchOperation);
예제 #5
0
 protected sealed override ITypeSymbol GetSwitchType(
     ISwitchExpressionOperation switchExpression
     ) => switchExpression.Value.Type ?? throw ExceptionUtilities.Unreachable;
예제 #6
0
 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);