private ValueContentAbstractValue(ImmutableHashSet <object?> literalValues, ValueContainsNonLiteralState nonLiteralState) { LiteralValues = literalValues; NonLiteralState = nonLiteralState; }
private static ValueContentAbstractValue Create(ImmutableHashSet <object?> literalValues, ValueContainsNonLiteralState nonLiteralState) { if (literalValues.IsEmpty) { return(nonLiteralState switch { ValueContainsNonLiteralState.Undefined => UndefinedState, ValueContainsNonLiteralState.Invalid => InvalidState, ValueContainsNonLiteralState.No => DoesNotContainLiteralOrNonLiteralState, _ => MayBeContainsNonLiteralState, });
private static ValueContentAbstractValue Create(ImmutableHashSet <object> literalValues, ValueContainsNonLiteralState nonLiteralState) { if (literalValues.IsEmpty) { switch (nonLiteralState) { case ValueContainsNonLiteralState.Undefined: return(UndefinedState); case ValueContainsNonLiteralState.Invalid: return(InvalidState); case ValueContainsNonLiteralState.No: return(DoesNotContainLiteralOrNonLiteralState); default: return(MayBeContainsNonLiteralState); } } else if (literalValues.Count == 1 && nonLiteralState == ValueContainsNonLiteralState.No) { switch (literalValues.Single()) { case bool boolVal: return(boolVal ? ContainsTrueLiteralState : ContainsFalseLiteralState); case string stringVal: if (stringVal.Length == 0) { return(ContainsEmptyStringLiteralState); } break; case int intValue: if (intValue == 0) { return(ContainsZeroIntergralLiteralState); } break; } } return(new ValueContentAbstractValue(literalValues, nonLiteralState)); }