6 types derived from ConstantValue
Microsoft.CodeAnalysis (6)
ConstantValueSpecialized.cs (6)
28private sealed class ConstantValueBad : ConstantValue 68private sealed class ConstantValueNull : ConstantValue 134private sealed class ConstantValueString : ConstantValue 229private sealed class ConstantValueDecimal : ConstantValue 270private sealed class ConstantValueDateTime : ConstantValue 313private abstract class ConstantValueDiscriminated : ConstantValue
1544 references to ConstantValue
Microsoft.CodeAnalysis (395)
CodeGen\ILBuilderEmit.cs (3)
224KeyValuePair<ConstantValue, object>[] caseLabels, 257KeyValuePair<ConstantValue, object>[] caseLabels, 566internal void EmitConstantValue(ConstantValue value, SyntaxNode? syntaxNode)
CodeGen\PrivateImplementationDetails.cs (9)
79private readonly ConcurrentDictionary<(ImmutableArray<ConstantValue> Constants, ushort ElementType), CachedArrayField> _cachedArrayFieldsForConstants = 80new ConcurrentDictionary<(ImmutableArray<ConstantValue> Constants, ushort ElementType), CachedArrayField>(ConstantValueAndUShortEqualityComparer.Instance); 227internal Cci.IFieldReference CreateArrayCachingField(ImmutableArray<ConstantValue> constants, Cci.IArrayTypeReference arrayType, EmitContext emitContext) 579private static string ConstantsToHex(ImmutableArray<ConstantValue> constants) 640private sealed class ConstantValueAndUShortEqualityComparer : EqualityComparer<(ImmutableArray<ConstantValue> Constants, ushort Value)> 646public override bool Equals((ImmutableArray<ConstantValue> Constants, ushort Value) x, (ImmutableArray<ConstantValue> Constants, ushort Value) y) 669public override int GetHashCode((ImmutableArray<ConstantValue> Constants, ushort Value) obj) 672foreach (var constant in obj.Constants)
CodeGen\SwitchIntegralJumpTableEmitter.cs (20)
45private readonly ImmutableArray<KeyValuePair<ConstantValue, object>> _sortedCaseLabels; 57KeyValuePair<ConstantValue, object>[] caseLabels, 116if (sortedCaseLabels[0].Key != ConstantValue.Null) 146private static int CompareIntegralSwitchLabels(KeyValuePair<ConstantValue, object> first, KeyValuePair<ConstantValue, object> second) 148ConstantValue firstConstant = first.Key; 149ConstantValue secondConstant = second.Key; 303ConstantValue pivotConstant = switchBuckets[mid - 1].EndConstant; 334ConstantValue constant = c.Key; 371ConstantValue startConstant = switchBucket.StartConstant; 393ConstantValue caseLabelConstant = switchBucket[nextCaseIndex].Key; 421private void EmitCondBranchForSwitch(ILOpCode branchCode, ConstantValue constant, object targetLabel) 437private void EmitEqBranchForSwitch(ConstantValue constant, object targetLabel) 458private void EmitRangeCheckedBranch(ConstantValue startConstant, ConstantValue endConstant, object targetLabel) 478int Int32Value(ConstantValue value) 521private void EmitNormalizedSwitchKey(ConstantValue startConstant, ConstantValue endConstant, object bucketFallThroughLabel) 542private void EmitRangeCheckIfNeeded(ConstantValue startConstant, ConstantValue endConstant, object bucketFallThroughLabel)
CodeGen\SwitchIntegralJumpTableEmitter.SwitchBucket.cs (21)
18private readonly ImmutableArray<KeyValuePair<ConstantValue, object>> _allLabels; 54internal SwitchBucket(ImmutableArray<KeyValuePair<ConstantValue, object>> allLabels, int index) 62private SwitchBucket(ImmutableArray<KeyValuePair<ConstantValue, object>> allLabels, int startIndex, int endIndex) 72internal SwitchBucket(ImmutableArray<KeyValuePair<ConstantValue, object>> allLabels, int startIndex, int endIndex, bool isDegenerate) 91internal KeyValuePair<ConstantValue, object> this[int i] 144var lastConst = this.StartConstant; 171private bool IsContiguous(ConstantValue lastConst, ConstantValue nextConst) 181private static ulong GetBucketSize(ConstantValue startConstant, ConstantValue endConstant) 203private static bool BucketOverflowUInt64Limit(ConstantValue startConstant, ConstantValue endConstant) 223private static bool BucketOverflow(ConstantValue startConstant, ConstantValue endConstant) 245internal ConstantValue StartConstant 253internal ConstantValue EndConstant 261private static bool IsValidSwitchBucketConstant(ConstantValue constant) 269private static bool IsValidSwitchBucketConstantPair(ConstantValue startConstant, ConstantValue endConstant) 284var startConstant = bucket1.StartConstant; 285var endConstant = bucket2.EndConstant;
CodeGen\SwitchStringJumpTableEmitter.cs (12)
16using HashBucket = List<KeyValuePair<ConstantValue, object>>; 35private readonly KeyValuePair<ConstantValue, object>[] _caseLabels; 48public delegate void EmitStringCompareAndBranch(LocalOrParameter key, ConstantValue stringConstant, object targetLabel); 75KeyValuePair<ConstantValue, object>[] caseLabels, 141var jumpTableLabels = new KeyValuePair<ConstantValue, object>[count]; 146ConstantValue hashConstant = ConstantValue.Create(hashValue); 149jumpTableLabels[i] = new KeyValuePair<ConstantValue, object>(hashConstant, hashBucketLabel); 169private void EmitNonHashTableSwitch(KeyValuePair<ConstantValue, object>[] labels) 180private void EmitCondBranchForStringSwitch(ConstantValue stringConstant, object targetLabel) 192KeyValuePair<ConstantValue, object>[] caseLabels, 200ConstantValue stringConstant = kvPair.Key;
Compilation\Compilation.cs (1)
1760internal abstract IConvertibleConversion ClassifyConvertibleConversion(IOperation source, ITypeSymbol destination, out ConstantValue? constantValue);
Compilation\Expression.cs (15)
9public static ConstantValue SynthesizeNumeric(ITypeSymbol type, int value) 14return ConstantValue.Create(value); 16return ConstantValue.Create((long)value); 18return ConstantValue.Create((uint)value); 20return ConstantValue.Create((ulong)value); 22return ConstantValue.Create((ushort)value); 24return ConstantValue.Create((short)value); 26return ConstantValue.Create((sbyte)value); 28return ConstantValue.Create((byte)value); 30return ConstantValue.Create((char)value); 32return ConstantValue.Create(value != 0); 34return ConstantValue.Create((float)value); 36return ConstantValue.Create((double)value); 38return ConstantValue.Create(1, ConstantValueTypeDiscriminator.Int32); 46return ConstantValue.Bad;
ConstantValue.cs (40)
39internal abstract partial class ConstantValue : IEquatable<ConstantValue?>, IFormattable 89public const ConstantValue NotAvailable = null; 91public static ConstantValue Bad { get { return ConstantValueBad.Instance; } } 92public static ConstantValue Null { get { return ConstantValueNull.Instance; } } 93public static ConstantValue Nothing { get { return Null; } } 96public static ConstantValue Unset { get { return ConstantValueNull.Uninitialized; } } 98public static ConstantValue True { get { return ConstantValueOne.Boolean; } } 99public static ConstantValue False { get { return ConstantValueDefault.Boolean; } } 101public static ConstantValue Create(string? value) 111internal static ConstantValue CreateFromRope(Rope value) 117public static ConstantValue Create(char value) 131public static ConstantValue Create(sbyte value) 145public static ConstantValue Create(byte value) 159public static ConstantValue Create(Int16 value) 173public static ConstantValue Create(UInt16 value) 187public static ConstantValue Create(Int32 value) 201public static ConstantValue Create(UInt32 value) 215public static ConstantValue Create(Int64 value) 229public static ConstantValue Create(UInt64 value) 243public static ConstantValue CreateNativeInt(Int32 value) 257public static ConstantValue CreateNativeUInt(UInt32 value) 271public static ConstantValue Create(bool value) 283public static ConstantValue Create(float value) 297public static ConstantValue CreateSingle(double value) 311public static ConstantValue Create(double value) 325public static ConstantValue Create(decimal value) 345public static ConstantValue Create(DateTime value) 355public static ConstantValue Create(object value, SpecialType st) 362public static ConstantValue CreateSizeOf(SpecialType st) 365return (size == 0) ? ConstantValue.NotAvailable : ConstantValue.Create(size); 368public static ConstantValue Create(object value, ConstantValueTypeDiscriminator discriminator) 399public static ConstantValue Default(SpecialType st) 406public static ConstantValue Default(ConstantValueTypeDiscriminator discriminator) 864public virtual bool Equals(ConstantValue? other) 879public static bool operator ==(ConstantValue? left, ConstantValue? right) 894public static bool operator !=(ConstantValue? left, ConstantValue? right) 906return this.Equals(obj as ConstantValue);
ConstantValueSpecialized.cs (18)
48public override bool Equals(ConstantValue? other) 105public override bool Equals(ConstantValue? other) 205public override bool Equals(ConstantValue? other) 264public override bool Equals(ConstantValue? other) 305public override bool Equals(ConstantValue? other) 426public override bool Equals(ConstantValue? other) 454public override bool Equals(ConstantValue? other) 477public override bool Equals(ConstantValue? other) 500public override bool Equals(ConstantValue? other) 652public override bool Equals(ConstantValue? other) 670public override bool Equals(ConstantValue? other) 723public override bool Equals(ConstantValue? other) 780public override bool Equals(ConstantValue? other) 823public override bool Equals(ConstantValue? other) 866public override bool Equals(ConstantValue? other) 910public override bool Equals(ConstantValue? other) 944public override bool Equals(ConstantValue? other) 990public override bool Equals(ConstantValue? other)
CryptographicHashProvider.cs (3)
228internal static ImmutableArray<byte> ComputeSourceHash(ImmutableArray<ConstantValue> constants, SourceHashAlgorithm hashAlgorithm = SourceHashAlgorithms.Default) 233foreach (var constant in constants) 240static byte[] getBytes(ConstantValue constant)
Emit\CommonPEModuleBuilder.cs (2)
173public abstract Cci.IFieldReference GetArrayCachingFieldForConstants(ImmutableArray<ConstantValue> constants, Cci.IArrayTypeReference arrayType, SyntaxNode syntaxNode, DiagnosticBag diagnostics); 1104public sealed override Cci.IFieldReference GetArrayCachingFieldForConstants(ImmutableArray<ConstantValue> constants, Cci.IArrayTypeReference arrayType, SyntaxNode syntaxNode, DiagnosticBag diagnostics)
EnumConstantHelper.cs (11)
20internal static EnumOverflowKind OffsetValue(ConstantValue constantValue, uint offset, out ConstantValue offsetValue) 25offsetValue = ConstantValue.Bad; 36offsetValue = ConstantValue.Create((sbyte)(previous + offset)); 46offsetValue = ConstantValue.Create((byte)(previous + offset)); 56offsetValue = ConstantValue.Create((short)(previous + offset)); 66offsetValue = ConstantValue.Create((ushort)(previous + offset)); 76offsetValue = ConstantValue.Create((int)(previous + offset)); 86offsetValue = ConstantValue.Create((uint)(previous + offset)); 96offsetValue = ConstantValue.Create((long)(previous + offset)); 106offsetValue = ConstantValue.Create((ulong)(previous + offset));
Generated\Operations.Generated.cs (143)
4051internal override ConstantValue? OperationConstantValue => null; 4106internal override ConstantValue? OperationConstantValue => null; 4176internal override ConstantValue? OperationConstantValue => null; 4282internal override ConstantValue? OperationConstantValue => null; 4374internal override ConstantValue? OperationConstantValue => null; 4486internal override ConstantValue? OperationConstantValue => null; 4510internal override ConstantValue? OperationConstantValue => null; 4563internal override ConstantValue? OperationConstantValue => null; 4583internal override ConstantValue? OperationConstantValue => null; 4597internal override ConstantValue? OperationConstantValue => null; 4649internal override ConstantValue? OperationConstantValue => null; 4713internal override ConstantValue? OperationConstantValue => null; 4792internal override ConstantValue? OperationConstantValue => null; 4860internal override ConstantValue? OperationConstantValue => null; 4911internal override ConstantValue? OperationConstantValue => null; 4975internal override ConstantValue? OperationConstantValue => null; 4989internal override ConstantValue? OperationConstantValue => null; 5003internal override ConstantValue? OperationConstantValue => null; 5069internal override ConstantValue? OperationConstantValue => null; 5076internal LiteralOperation(SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 5087internal override ConstantValue? OperationConstantValue { get; } 5094internal ConversionOperation(IOperation operand, IConvertibleConversion conversion, bool isTryCast, bool isChecked, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 5147internal override ConstantValue? OperationConstantValue { get; } 5220internal override ConstantValue? OperationConstantValue => null; 5287internal override ConstantValue? OperationConstantValue => null; 5294internal LocalReferenceOperation(ILocalSymbol local, bool isDeclaration, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 5309internal override ConstantValue? OperationConstantValue { get; } 5328internal override ConstantValue? OperationConstantValue => null; 5345internal FieldReferenceOperation(IFieldSymbol field, bool isDeclaration, IOperation? instance, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 5393internal override ConstantValue? OperationConstantValue { get; } 5449internal override ConstantValue? OperationConstantValue => null; 5518internal override ConstantValue? OperationConstantValue => null; 5572internal override ConstantValue? OperationConstantValue => null; 5579internal UnaryOperation(UnaryOperatorKind operatorKind, IOperation operand, bool isLifted, bool isChecked, IMethodSymbol? operatorMethod, ITypeSymbol? constrainedToType, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 5635internal override ConstantValue? OperationConstantValue { get; } 5642internal BinaryOperation(BinaryOperatorKind operatorKind, IOperation leftOperand, IOperation rightOperand, bool isLifted, bool isChecked, bool isCompareText, IMethodSymbol? operatorMethod, ITypeSymbol? constrainedToType, IMethodSymbol? unaryOperatorMethod, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 5713internal override ConstantValue? OperationConstantValue { get; } 5720internal ConditionalOperation(IOperation condition, IOperation whenTrue, IOperation? whenFalse, bool isRef, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 5790internal override ConstantValue? OperationConstantValue { get; } 5797internal CoalesceOperation(IOperation value, IOperation whenNull, IConvertibleConversion valueConversion, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 5857internal override ConstantValue? OperationConstantValue { get; } 5910internal override ConstantValue? OperationConstantValue => null; 5917internal ObjectCreationOperation(IMethodSymbol? constructor, IObjectOrCollectionInitializerOperation? initializer, ImmutableArray<IArgumentOperation> arguments, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 5980internal override ConstantValue? OperationConstantValue { get; } 6032internal override ConstantValue? OperationConstantValue => null; 6099internal override ConstantValue? OperationConstantValue => null; 6118internal override ConstantValue? OperationConstantValue => null; 6174internal override ConstantValue? OperationConstantValue => null; 6226internal override ConstantValue? OperationConstantValue => null; 6244internal SimpleAssignmentOperation(bool isRef, IOperation target, IOperation value, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 6299internal override ConstantValue? OperationConstantValue { get; } 6374internal override ConstantValue? OperationConstantValue => null; 6381internal ParenthesizedOperation(IOperation operand, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 6427internal override ConstantValue? OperationConstantValue { get; } 6492internal override ConstantValue? OperationConstantValue => null; 6555internal override ConstantValue? OperationConstantValue => null; 6572internal override ConstantValue? OperationConstantValue => null; 6579internal InterpolatedStringOperation(ImmutableArray<IInterpolatedStringContentOperation> parts, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 6629internal override ConstantValue? OperationConstantValue { get; } 6685internal override ConstantValue? OperationConstantValue => null; 6741internal override ConstantValue? OperationConstantValue => null; 6804internal override ConstantValue? OperationConstantValue => null; 6811internal NameOfOperation(IOperation argument, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 6857internal override ConstantValue? OperationConstantValue { get; } 6915internal override ConstantValue? OperationConstantValue => null; 6973internal override ConstantValue? OperationConstantValue => null; 7025internal override ConstantValue? OperationConstantValue => null; 7077internal override ConstantValue? OperationConstantValue => null; 7084internal DefaultValueOperation(SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 7095internal override ConstantValue? OperationConstantValue { get; } 7114internal override ConstantValue? OperationConstantValue => null; 7121internal SizeOfOperation(ITypeSymbol typeOperand, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 7134internal override ConstantValue? OperationConstantValue { get; } 7186internal override ConstantValue? OperationConstantValue => null; 7249internal override ConstantValue? OperationConstantValue => null; 7312internal override ConstantValue? OperationConstantValue => null; 7364internal override ConstantValue? OperationConstantValue => null; 7423internal override ConstantValue? OperationConstantValue => null; 7475internal override ConstantValue? OperationConstantValue => null; 7492internal override ConstantValue? OperationConstantValue => null; 7554internal override ConstantValue? OperationConstantValue => null; 7601internal override ConstantValue? OperationConstantValue => null; 7652internal override ConstantValue? OperationConstantValue => null; 7703internal override ConstantValue? OperationConstantValue => null; 7758internal override ConstantValue? OperationConstantValue => null; 7826internal override ConstantValue? OperationConstantValue => null; 7907internal override ConstantValue? OperationConstantValue => null; 7968internal override ConstantValue? OperationConstantValue => null; 8045internal override ConstantValue? OperationConstantValue => null; 8119internal override ConstantValue? OperationConstantValue => null; 8143internal override ConstantValue? OperationConstantValue => null; 8206internal override ConstantValue? OperationConstantValue => null; 8268internal override ConstantValue? OperationConstantValue => null; 8321internal override ConstantValue? OperationConstantValue => null; 8372internal override ConstantValue? OperationConstantValue => null; 8428internal override ConstantValue? OperationConstantValue => null; 8501internal override ConstantValue? OperationConstantValue => null; 8563internal override ConstantValue? OperationConstantValue => null; 8585internal override ConstantValue? OperationConstantValue => null; 8650internal override ConstantValue? OperationConstantValue => null; 8717internal override ConstantValue? OperationConstantValue => null; 8788internal override ConstantValue? OperationConstantValue => null; 8807internal override ConstantValue? OperationConstantValue => null; 8860internal override ConstantValue? OperationConstantValue => null; 8867internal FlowCaptureReferenceOperation(CaptureId id, bool isInitialization, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 8882internal override ConstantValue? OperationConstantValue { get; } 8889internal IsNullOperation(IOperation operand, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 8935internal override ConstantValue? OperationConstantValue { get; } 8952internal override ConstantValue? OperationConstantValue => null; 8971internal override ConstantValue? OperationConstantValue => null; 9030internal override ConstantValue? OperationConstantValue => null; 9097internal override ConstantValue? OperationConstantValue => null; 9154internal override ConstantValue? OperationConstantValue => null; 9220internal override ConstantValue? OperationConstantValue => null; 9296internal override ConstantValue? OperationConstantValue => null; 9310internal override ConstantValue? OperationConstantValue => null; 9379internal override ConstantValue? OperationConstantValue => null; 9454internal override ConstantValue? OperationConstantValue => null; 9516internal override ConstantValue? OperationConstantValue => null; 9579internal override ConstantValue? OperationConstantValue => null; 9643internal override ConstantValue? OperationConstantValue => null; 9695internal override ConstantValue? OperationConstantValue => null; 9714internal override ConstantValue? OperationConstantValue => null; 9776internal override ConstantValue? OperationConstantValue => null; 9831internal override ConstantValue? OperationConstantValue => null; 9882internal override ConstantValue? OperationConstantValue => null; 9946internal override ConstantValue? OperationConstantValue => null; 9964internal override ConstantValue? OperationConstantValue => null; 10017internal override ConstantValue? OperationConstantValue => null; 10082internal override ConstantValue? OperationConstantValue => null; 10149internal override ConstantValue? OperationConstantValue => null; 10211internal override ConstantValue? OperationConstantValue => null; 10263internal override ConstantValue? OperationConstantValue => null; 10283internal override ConstantValue? OperationConstantValue => null; 10350internal override ConstantValue? OperationConstantValue => null; 10411internal override ConstantValue? OperationConstantValue => null; 10464internal override ConstantValue? OperationConstantValue => null; 10531internal override ConstantValue? OperationConstantValue => null; 10550internal override ConstantValue? OperationConstantValue => null; 10601internal override ConstantValue? OperationConstantValue => null; 10664internal override ConstantValue? OperationConstantValue => null; 10722internal override ConstantValue? OperationConstantValue => null; 10778internal override ConstantValue? OperationConstantValue => null;
MetadataReader\MetadataDecoder.cs (24)
987internal void DecodeLocalConstantBlobOrThrow(ref BlobReader sigReader, out TypeSymbol type, out ConstantValue value) 1012value = ConstantValue.Create(sigReader.ReadDecimal()); 1016value = ConstantValue.Create(sigReader.ReadDateTime()); 1022value = (type.IsReferenceType || type.TypeKind == TypeKind.Pointer || type.TypeKind == TypeKind.FunctionPointer) ? ConstantValue.Null : ConstantValue.Bad; 1026value = ConstantValue.Bad; 1057private static ConstantValue DecodePrimitiveConstantValue(ref BlobReader sigReader, SignatureTypeCode typeCode, out bool isEnumTypeCode) 1063return ConstantValue.Create(sigReader.ReadBoolean()); 1067return ConstantValue.Create(sigReader.ReadChar()); 1071return ConstantValue.Create(sigReader.ReadSByte()); 1075return ConstantValue.Create(sigReader.ReadByte()); 1079return ConstantValue.Create(sigReader.ReadInt16()); 1083return ConstantValue.Create(sigReader.ReadUInt16()); 1087return ConstantValue.Create(sigReader.ReadInt32()); 1091return ConstantValue.Create(sigReader.ReadUInt32()); 1095return ConstantValue.Create(sigReader.ReadInt64()); 1099return ConstantValue.Create(sigReader.ReadUInt64()); 1103return ConstantValue.Create(sigReader.ReadSingle()); 1107return ConstantValue.Create(sigReader.ReadDouble()); 1116return ConstantValue.Bad; 1119return ConstantValue.Null; 1124return ConstantValue.Bad; 1127return ConstantValue.Create(sigReader.ReadUTF16(sigReader.RemainingBytes)); 1132return ConstantValue.Null;
MetadataReader\PEModule.cs (27)
1598internal bool HasDateTimeConstantAttribute(EntityHandle token, out ConstantValue defaultValue) 1607defaultValue = ConstantValue.Bad; 1611defaultValue = ConstantValue.Create(new DateTime(value)); 1621internal bool HasDecimalConstantAttribute(EntityHandle token, out ConstantValue defaultValue) 1627defaultValue = ConstantValue.Create(value); 3585internal ConstantValue GetParamDefaultValue(ParameterHandle param) 3594return constantHandle.IsNil ? ConstantValue.Bad : GetConstantValueOrThrow(constantHandle); 3598return ConstantValue.Bad; 3602internal ConstantValue GetConstantFieldValue(FieldDefinitionHandle fieldDef) 3611return constantHandle.IsNil ? ConstantValue.Bad : GetConstantValueOrThrow(constantHandle); 3615return ConstantValue.Bad; 3706private ConstantValue GetConstantValueOrThrow(ConstantHandle handle) 3713return ConstantValue.Create(reader.ReadBoolean()); 3716return ConstantValue.Create(reader.ReadChar()); 3719return ConstantValue.Create(reader.ReadSByte()); 3722return ConstantValue.Create(reader.ReadInt16()); 3725return ConstantValue.Create(reader.ReadInt32()); 3728return ConstantValue.Create(reader.ReadInt64()); 3731return ConstantValue.Create(reader.ReadByte()); 3734return ConstantValue.Create(reader.ReadUInt16()); 3737return ConstantValue.Create(reader.ReadUInt32()); 3740return ConstantValue.Create(reader.ReadUInt64()); 3743return ConstantValue.Create(reader.ReadSingle()); 3746return ConstantValue.Create(reader.ReadDouble()); 3749return ConstantValue.Create(reader.ReadUTF16(reader.Length)); 3757return ConstantValue.Null; 3763return ConstantValue.Bad;
Operations\ControlFlowGraphBuilder.cs (12)
2433ConstantValue constantValue = ConstantValue.Create(!isAndAlso); 2458return new ConversionOperation(operand, _compilation.ClassifyConvertibleConversion(operand, type, out ConstantValue? constantValue), isTryCast: false, isChecked: false, 2692var constantValue = ConstantValue.Create(stopValue); 3315ConstantValue? constantValue = operand.GetConstantValue() is { IsNull: var isNull } 3316? ConstantValue.Create(isNull) 3459? ConstantValue.Null 4214return new ConversionOperation(operand, _compilation.ClassifyConvertibleConversion(operand, iDisposable, out var constantValue), isTryCast, isChecked: false, 4948isUp = new LiteralOperation(semanticModel: null, stepValue.Syntax, booleanType, constantValue: ConstantValue.Create(false), isImplicit: true); 4957constantValue: ConstantValue.Default(stepValueEnumUnderlyingTypeOrSelf.SpecialType), 5244constantValue: ConstantValue.Create(bits), isImplicit: true);
Operations\Operation.cs (1)
89internal abstract CodeAnalysis.ConstantValue? OperationConstantValue { get; }
Operations\OperationExtensions.cs (1)
388internal static ConstantValue? GetConstantValue(this IOperation operation)
Operations\OperationNodes.cs (10)
18public NoneOperation(ImmutableArray<IOperation> children, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) : 65internal override ConstantValue? OperationConstantValue { get; } 87public InvalidOperation(ImmutableArray<IOperation> children, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) : 136internal override ConstantValue? OperationConstantValue { get; } 170internal override ConstantValue? OperationConstantValue => null; 259internal override ConstantValue? OperationConstantValue => null; 401internal override ConstantValue? OperationConstantValue => null; 423internal override ConstantValue? OperationConstantValue => null; 641public FlowCaptureReferenceOperation(int id, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isInitialization = false) : 658public IsNullOperation(SyntaxNode syntax, IOperation operand, ITypeSymbol type, ConstantValue? constantValue) :
SwitchConstantValueHelper.cs (9)
17public static bool IsValidSwitchCaseLabelConstant(ConstantValue constant) 50public static int CompareSwitchCaseLabelConstants(ConstantValue first, ConstantValue second) 103var firstConstant = first as ConstantValue; 106var secondConstant = second as ConstantValue; 132var constant = obj as ConstantValue;
Symbols\Attributes\CommonAttributeData.cs (5)
194internal ConstantValue DecodeDecimalConstantValue() 237return ConstantValue.Create(new decimal(low, mid, high, isNegative, scale)); 240internal ConstantValue DecodeDateTimeConstantValue() 247return ConstantValue.Bad; 250return ConstantValue.Create(new DateTime(value));
Symbols\Attributes\CommonFieldWellKnownAttributeData.cs (4)
45private ConstantValue _constValue = ConstantValue.Unset; 47public ConstantValue ConstValue 56Debug.Assert(_constValue == ConstantValue.Unset);
Symbols\Attributes\CommonParameterEarlyWellKnownAttributeData.cs (4)
17private ConstantValue _defaultParameterValue = ConstantValue.Unset; 19public ConstantValue DefaultParameterValue 28Debug.Assert(_defaultParameterValue == ConstantValue.Unset);
Microsoft.CodeAnalysis.CSharp (881)
Binder\Binder_Attributes.cs (2)
574lvalue = new BoundFieldAccess(nameSyntax, null, fieldSymbol, ConstantValue.NotAvailable, resultKind, fieldSymbol.Type); 849ConstantValue? constantValue = node.ConstantValueOpt;
Binder\Binder_Await.cs (1)
370var receiver = new BoundLiteral(node, ConstantValue.Null, awaiterType);
Binder\Binder_Conversions.cs (25)
269ConstantValue? constantValue = this.FoldConstantConversion(syntax, source, conversion, destination, diagnostics); 1963var constantValue = FoldConditionalOperator(condition, trueExpr, falseExpr); 2036constantValueOpt: ConstantValue.NotAvailable, 2118constantValueOpt: ConstantValue.NotAvailable, 2156constantValueOpt: ConstantValue.NotAvailable, 2208expr = new BoundConversion(syntax, source, conversion, @checked: false, explicitCastInCode: isCast, conversionGroup, constantValueOpt: ConstantValue.NotAvailable, type: delegateType, hasErrors: true) { WasCompilerGenerated = source.WasCompilerGenerated }; 2251constantValueOpt: ConstantValue.NotAvailable, 2275return new BoundConversion(syntax, group, conversion, @checked: false, explicitCastInCode: isCast, conversionGroup, constantValueOpt: ConstantValue.NotAvailable, type: destination, hasErrors: hasErrors) { WasCompilerGenerated = group.WasCompilerGenerated }; 2348DefaultValueFromAttributes: ConstantValue.NotAvailable 2384var delegateParamDefault = delegateParameter.HasExplicitDefaultValue ? delegateParameter.ExplicitDefaultConstantValue : null; 2528constantValueOpt: ConstantValue.NotAvailable, 2543constantValueOpt: ConstantValue.NotAvailable, 3107public ConstantValue? FoldConstantConversion( 3142var sourceConstantValue = source.ConstantValueOpt; 3173return ConstantValue.Create(sourceConstantValue.SingleValue); 3175return ConstantValue.Create(sourceConstantValue.DoubleValue); 3209private ConstantValue? FoldConstantNumericConversion( 3211ConstantValue sourceValue, 3242return ConstantValue.Bad; 3250return ConstantValue.Bad; 3266return ConstantValue.Bad; 3279return ConstantValue.Create(DoUncheckedConversion(destinationType, sourceValue), destinationType); 3282private static object DoUncheckedConversion(SpecialType destinationType, ConstantValue value) 3585public static bool CheckConstantBounds(SpecialType destinationType, ConstantValue value, out bool maySucceedAtRuntime) 3662private static object CanonicalizeConstant(ConstantValue value)
Binder\Binder_Expressions.cs (21)
1439ConstantValue constantValue = GetConstantSizeOf(type); 1563internal static ConstantValue GetConstantSizeOf(TypeSymbol type) 1565return ConstantValue.CreateSizeOf((type.GetEnumUnderlyingType() ?? type).SpecialType); 2109var constantValueOpt = localSymbol.IsConst && !IsInsideNameof && !type.IsErrorType() 4483ConstantValue.Create(knownSizes[i] ?? 0), 4708ConstantValue.Create(boundInitExprOpt.Length), 4728var constantValue = expression.ConstantValueOpt; 4747var constantValue = expression.ConstantValueOpt; 5322lengthOrCount = new BoundLiteral(expression.Syntax, ConstantValue.Create(length), @this.GetSpecialType(SpecialType.System_Int32, diagnostics, expression.Syntax)) { WasCompilerGenerated = true }; 6825ConstantValue constantValueOpt = (initializerSyntaxOpt == null && method.IsDefaultValueTypeConstructor()) ? 7305private static ConstantValue FoldParameterlessValueTypeConstructor(NamedTypeSymbol type) 7338return ConstantValue.Default(specialType); 7367ConstantValue cv; 7372cv = ConstantValue.Null; 7388cv = ConstantValue.Create(value, specialType); 7780if (boundLeft.Kind == BoundKind.Literal && ((BoundLiteral)boundLeft).ConstantValueOpt == ConstantValue.Null) 7953if ((boundLeft is BoundDefaultLiteral || boundLeft is BoundDefaultExpression) && boundLeft.ConstantValueOpt == ConstantValue.Null && 8921ConstantValue constantValueOpt = null; 8926if (constantValueOpt == ConstantValue.Unset) 8930constantValueOpt = ConstantValue.Bad; 9698ConstantValue constant = index.ConstantValueOpt;
Binder\Binder_InterpolatedString.cs (10)
42ConstantValue? resultConstant = null; 47resultConstant = ConstantValue.Create(string.Empty); 102var alignmentConstant = alignment.ConstantValueOpt; 137format = new BoundLiteral(interpolation.FormatClause, ConstantValue.Create(text), stringType, hasErrors); 167var constantValue = ConstantValue.Create(text, SpecialType.System_String); 414expressions[0] = new BoundLiteral(syntax, ConstantValue.Create(formatString.ToStringAndFree()), GetSpecialType(Microsoft.CodeAnalysis.SpecialType.System_String, diagnostics, syntax)) { WasCompilerGenerated = true }; 820argumentsBuilder.Add(new BoundLiteral(syntax, ConstantValue.Create(baseStringLength), intType) { WasCompilerGenerated = true }); 822argumentsBuilder.Add(new BoundLiteral(syntax, ConstantValue.Create(numFormatHoles), intType) { WasCompilerGenerated = true }); 955argumentsBuilder.Add(boundLiteral.Update(ConstantValue.Create(literalText), boundLiteral.Type));
Binder\Binder_Invocation.cs (12)
1472defaultValue = new BoundFieldAccess(syntax, null, fieldSymbol, ConstantValue.NotAvailable) { WasCompilerGenerated = true }; 1665var parameterDefaultValue = parameter.ExplicitDefaultConstantValue; 1672var defaultConstantValue = parameterDefaultValue switch 1675{ IsBad: true } => ConstantValue.Null, 1678Debug.Assert((object?)defaultConstantValue != ConstantValue.Unset); 1686defaultValue = new BoundLiteral(syntax, ConstantValue.Create(line), Compilation.GetSpecialType(SpecialType.System_Int32)) { WasCompilerGenerated = true }; 1691defaultValue = new BoundLiteral(syntax, ConstantValue.Create(path), Compilation.GetSpecialType(SpecialType.System_String)) { WasCompilerGenerated = true }; 1696defaultValue = new BoundLiteral(syntax, ConstantValue.Create(memberName), Compilation.GetSpecialType(SpecialType.System_String)) { WasCompilerGenerated = true }; 1705defaultValue = new BoundLiteral(syntax, ConstantValue.Create(argument.Syntax.ToString()), Compilation.GetSpecialType(SpecialType.System_String)) { WasCompilerGenerated = true }; 1707else if (defaultConstantValue == ConstantValue.NotAvailable) 1782BoundExpression arraySize = new BoundLiteral(node, ConstantValue.Create(collectionArgs.Length), int32Type) { WasCompilerGenerated = true }; 2349return new BoundNameOfOperator(node, boundArgument, ConstantValue.Create(name), Compilation.GetSpecialType(SpecialType.System_String));
Binder\Binder_Operators.cs (113)
814constantValueOpt: ConstantValue.NotAvailable, 917return new BoundBinaryOperator(node, kind, ConstantValue.NotAvailable, methodOpt: null, constrainedToTypeOpt: null, LookupResultKind.Empty, left, right, GetBinaryOperatorErrorType(kind, diagnostics, node), true); 941return new BoundLiteral(node, ConstantValue.Create(kind == BinaryOperatorKind.Equal), GetSpecialType(SpecialType.System_Boolean, diagnostics, node)); 957var stringConstant = FoldBinaryOperator(node, BinaryOperatorKind.StringConcatenation, left, right, right.Type, diagnostics); 1033ConstantValue resultConstant = null; 1392var constantValue = FoldBinaryOperator(node, kind | BinaryOperatorKind.Bool, left, right, left.Type, diagnostics); 1405return new BoundBinaryOperator(node, kind, ConstantValue.NotAvailable, methodOpt: null, constrainedToTypeOpt: null, 1526ConstantValue.NotAvailable, 1537return new BoundBinaryOperator(node, kind, left, right, ConstantValue.NotAvailable, methodOpt: null, constrainedToTypeOpt: null, lookupResult, originalUserDefinedOperators, CreateErrorType(), true); 2335private static object FoldDecimalBinaryOperators(BinaryOperatorKind kind, ConstantValue valueLeft, ConstantValue valueRight) 2366private static object FoldNativeIntegerOverflowingBinaryOperator(BinaryOperatorKind kind, ConstantValue valueLeft, ConstantValue valueRight) 2409private static object FoldUncheckedIntegralBinaryOperator(BinaryOperatorKind kind, ConstantValue valueLeft, ConstantValue valueRight) 2465private static object FoldCheckedIntegralBinaryOperator(BinaryOperatorKind kind, ConstantValue valueLeft, ConstantValue valueRight) 2555private ConstantValue? FoldEnumBinaryOperator( 2616var constantValue = FoldBinaryOperator(syntax, newKind, newLeftOperand, newRightOperand, resultTypeSymbol, diagnostics); 2630private ConstantValue? FoldBinaryOperator( 2647ConstantValue? nullableEqualityResult = TryFoldingNullableEquality(kind, left, right); 2653var valueLeft = left.ConstantValueOpt; 2654var valueRight = right.ConstantValueOpt; 2662return ConstantValue.Bad; 2674return ConstantValue.Bad; 2689return ConstantValue.Create(newValue, resultType); 2692ConstantValue? concatResult = FoldStringConcatenation(kind, valueLeft, valueRight); 2713return ConstantValue.Bad; 2718return ConstantValue.Create(newValue, resultType); 2737return ConstantValue.Create(newValue, resultType); 2749return ConstantValue.Bad; 2759return ConstantValue.Create(newValue, resultType); 2787private static ConstantValue? TryFoldingNullableEquality(BinaryOperatorKind kind, BoundExpression left, BoundExpression right) 2798ConstantValue? leftConstant = leftConv.Operand.ConstantValueOpt; 2799ConstantValue? rightConstant = rightConv.Operand.ConstantValueOpt; 2809return (leftIsNull == rightIsNull) == (op == BinaryOperatorKind.Equal) ? ConstantValue.True : ConstantValue.False; 2820private static object? FoldNeverOverflowBinaryOperators(BinaryOperatorKind kind, ConstantValue valueLeft, ConstantValue valueRight) 3052private static ConstantValue? FoldStringConcatenation(BinaryOperatorKind kind, ConstantValue valueLeft, ConstantValue valueRight) 3063return (newLength > int.MaxValue) ? ConstantValue.Bad : ConstantValue.CreateFromRope(Rope.Concat(leftValue, rightValue)); 4166return new BoundUnaryOperator(node, kind, operand, ConstantValue.NotAvailable, 4187constantValueOpt: ConstantValue.NotAvailable, 4204ConstantValue.NotAvailable, 4218var resultConstant = FoldUnaryOperator(node, resultOperatorKind, resultOperand, resultType, diagnostics); 4234private ConstantValue? FoldEnumUnaryOperator( 4255var constantValue = FoldUnaryOperator(syntax, newKind, operand, upconvertType, diagnostics); 4269private ConstantValue? FoldUnaryOperator( 4284var value = operand.ConstantValueOpt; 4299return ConstantValue.Create(newValue, resultType); 4318return ConstantValue.Create(newValue, resultType); 4330return ConstantValue.Bad; 4340return ConstantValue.Create(newValue, resultType); 4346private static object? FoldNeverOverflowUnaryOperator(UnaryOperatorKind kind, ConstantValue value) 4386private static object? FoldUncheckedIntegralUnaryOperator(UnaryOperatorKind kind, ConstantValue value) 4402private static object? FoldCheckedIntegralUnaryOperator(UnaryOperatorKind kind, ConstantValue value) 4418private static object? FoldNativeIntegerOverflowingUnaryOperator(UnaryOperatorKind kind, ConstantValue value) 4531return new BoundLiteral(node, ConstantValue.Create((int)-2147483648), GetSpecialType(SpecialType.System_Int32, diagnostics, node)); 4546return new BoundLiteral(node, ConstantValue.Create(-9223372036854775808), GetSpecialType(SpecialType.System_Int64, diagnostics, node)); 4552private static bool IsDivisionByZero(BinaryOperatorKind kind, ConstantValue valueRight) 4669var convertedExpression = BindExpressionForPattern(operand.Type, node.Right, ref hasErrors, isPatternDiagnostics, out var constantValueOpt, out var wasExpression, out _); 4676node.Right, convertedExpression, constantValueOpt ?? ConstantValue.Bad, operand.Type, convertedExpression.Type ?? operand.Type, hasErrors) 4715if (operand.ConstantValueOpt == ConstantValue.Null || 4781ConstantValue operandConstantValue) 4788ConstantValue constantValue = GetIsOperatorConstantResult(operandType, targetType, conversionKind, operandConstantValue); 4797Debug.Assert(constantValue == ConstantValue.True || constantValue == ConstantValue.False); 4799ErrorCode errorCode = constantValue == ConstantValue.True ? ErrorCode.WRN_IsAlwaysTrue : ErrorCode.WRN_IsAlwaysFalse; 4807/// - <see cref="ConstantValue.False"/> 4808/// - <see cref="ConstantValue.True"/> 4809/// - <see cref="ConstantValue.Bad"/> - compiler doesn't support the type check, i.e. cannot perform it, even at runtime 4812internal static ConstantValue GetIsOperatorConstantResult( 4816ConstantValue operandConstantValue, 4855if (operandConstantValue == ConstantValue.Null) 4857return ConstantValue.False; 4865(operandConstantValue == null || operandConstantValue == ConstantValue.Null); // a non-null constant is never null 4930return ConstantValue.False; 4940return ConstantValue.False; 4961return ConstantValue.False; 4969return ConstantValue.False; 4974return ConstantValue.Bad; 5008return ConstantValue.False; 5018return ConstantValue.False; 5034return ConstantValue.False; 5043return operandCouldBeNull ? null : ConstantValue.True; 5049return ConstantValue.False; 5052return operandCouldBeNull ? null : ConstantValue.True; 5067return operandCouldBeNull ? null : ConstantValue.True; 5084return operandCouldBeNull ? null : ConstantValue.True; 5096? ConstantValue.True : ConstantValue.False; 5220operand = new BoundDefaultExpression(operand.Syntax, targetType: null, constantValueOpt: ConstantValue.Null, 5278ConstantValue operandConstantValue) 5340ConstantValue operandConstantValue) 5347ConstantValue constantValue = GetAsOperatorConstantResult(operandType, targetType, conversionKind, operandConstantValue); 5364/// - <see cref="ConstantValue.Null"/> 5365/// - <see cref="ConstantValue.Bad"/> - compiler doesn't support the type check, i.e. cannot perform it, even at runtime 5368internal static ConstantValue GetAsOperatorConstantResult(TypeSymbol operandType, TypeSymbol targetType, ConversionKind conversionKind, ConstantValue operandConstantValue) 5375ConstantValue isOperatorConstantResult = GetIsOperatorConstantResult(operandType, targetType, conversionKind, operandConstantValue); 5387return ConstantValue.Bad; 5390return ConstantValue.Null; 5730ConstantValue? constantValue = null; 5828private static ConstantValue FoldConditionalOperator(BoundExpression condition, BoundExpression trueExpr, BoundExpression falseExpr) 5830ConstantValue trueValue = trueExpr.ConstantValueOpt; 5836ConstantValue falseValue = falseExpr.ConstantValueOpt; 5842ConstantValue conditionValue = condition.ConstantValueOpt; 5847else if (conditionValue == ConstantValue.True) 5851else if (conditionValue == ConstantValue.False) 5857return ConstantValue.Bad;
Binder\Binder_Patterns.cs (26)
425var convertedExpression = BindExpressionOrTypeForPattern(inputType, innerExpression, ref hasErrors, diagnostics, out var constantValueOpt, out bool wasExpression, out Conversion patternConversion); 441node, convertedExpression, constantValueOpt ?? ConstantValue.Bad, inputType, convertedType, hasErrors || constantValueOpt is null); 503out ConstantValue? constantValueOpt, 531out ConstantValue? constantValueOpt, 549out ConstantValue? constantValueOpt, 579if (convertedExpression.Type is null && constantValueOpt != ConstantValue.Null) 592out ConstantValue? constantValue, 608if (expression.ConstantValueOpt == ConstantValue.Null) 621ConstantValue match = ExpressionOfTypeMatchesPatternType(Conversions, inputType, expression.Type, ref useSiteInfo, out _, operandConstantValue: null); 622if (match == ConstantValue.False || match == ConstantValue.Bad) 672if (constantValue == ConstantValue.Null) 766ConstantValue matchPossible = ExpressionOfTypeMatchesPatternType( 769if (matchPossible != ConstantValue.False && matchPossible != ConstantValue.Bad) 798/// - <see cref="ConstantValue.True"/> if the matched type catches all of them 799/// - <see cref="ConstantValue.False"/> if it catches none of them 800/// - <see cref="ConstantValue.Bad"/> - compiler doesn't support the type check, i.e. cannot perform it, even at runtime 803internal static ConstantValue ExpressionOfTypeMatchesPatternType( 809ConstantValue? operandConstantValue = null, 819return ConstantValue.True; 829ConstantValue result = Binder.GetIsOperatorConstantResult(expressionType, patternType, conversion.Kind, operandConstantValue, operandCouldBeNull); 832Debug.Assert(!conversion.IsUserDefined || result == ConstantValue.False || result == ConstantValue.Bad); 1632BoundExpression value = BindExpressionForPattern(inputType, node.Expression, ref hasErrors, diagnostics, out var constantValueOpt, out _, out Conversion patternConversion); 1668constantValueOpt = ConstantValue.Bad;
Binder\Binder_Statements.cs (9)
2248Conversion conversion, TypeSymbol sourceType, TypeSymbol targetType, ConstantValue sourceConstantValueOpt = null) 2265else if (conversion.Kind == ConversionKind.ExplicitNumeric && sourceConstantValueOpt != null && sourceConstantValueOpt != ConstantValue.Bad && 2266ConversionsBase.HasImplicitConstantExpressionConversion(new BoundLiteral(syntax, ConstantValue.Bad, sourceType), targetType)) 2663return BoundConversion.Synthesized(node, BindToTypeForErrorRecovery(expr), Conversion.NoConversion, false, explicitCastInCode: false, conversionGroupOpt: null, ConstantValue.NotAvailable, boolean, hasErrors: true); 2675ConstantValue.NotAvailable, 2727return BoundConversion.Synthesized(node, expr, Conversion.NoConversion, false, explicitCastInCode: false, conversionGroupOpt: null, ConstantValue.NotAvailable, boolean, hasErrors: true); 2746return new BoundUnaryOperator(node, signature.Kind, resultOperand, ConstantValue.NotAvailable, signature.Method, signature.ConstrainedToTypeOpt, resultKind, originalUserDefinedOperators, signature.ReturnType) 3358exceptionSource = new BoundLocal(declaration, local, ConstantValue.NotAvailable, local.Type); 3370if (boundFilter.ConstantValueOpt != ConstantValue.NotAvailable)
Binder\DecisionDagBuilder.cs (16)
343tests.Add(new Tests.One(new BoundDagValueTest(syntax, ConstantValue.Create(patternLength), lengthTemp))); 487if (constant.ConstantValue == ConstantValue.Null) 1153resultForRelation(BinaryOperatorKind relation, ConstantValue value) 1301ConstantValue? matches = ExpressionOfTypeMatchesPatternTypeForLearningFromSuccessfulTypeTest(t1.Type, t2.Type, ref useSiteInfo); 1302if (matches == ConstantValue.False) 1308else if (matches == ConstantValue.True) 1318if (matches == ConstantValue.True) 1359ConstantValue value, 1502(conditions ??= ArrayBuilder<Tests>.GetInstance()).Add(new Tests.One(new BoundDagValueTest(syntax, ConstantValue.Create(lengthValue), s1LengthTemp))); 1539private ConstantValue? ExpressionOfTypeMatchesPatternTypeForLearningFromSuccessfulTypeTest( 1544ConstantValue result = Binder.ExpressionOfTypeMatchesPatternType(_conversions, expressionType, patternType, ref useSiteInfo, out Conversion conversion); 2012public bool IsFullyMatched => RemainingTests is Tests.True && (WhenClause is null || WhenClause.ConstantValueOpt == ConstantValue.True); 2252static Tests? knownResult(BinaryOperatorKind relation, ConstantValue constant, int offset) 2264static ConstantValue safeAdd(ConstantValue constant, int offset) 2271return ConstantValue.Create(offset > (int.MaxValue - value) ? int.MaxValue : value + offset);
Binder\DecisionDagBuilder_ListPatterns.cs (2)
46? new BoundDagRelationalTest(syntax, BinaryOperatorKind.IntGreaterThanOrEqual, ConstantValue.Create(subpatterns.Length - 1), lengthTemp) 47: new BoundDagValueTest(syntax, ConstantValue.Create(subpatterns.Length), lengthTemp)));
Binder\ForEachLoopBinder.cs (2)
667ConstantValue.NotAvailable, 1581ConstantValue.NotAvailable,
Binder\LockBinder.cs (1)
46if (expr.ConstantValueOpt != ConstantValue.Null || Compilation.FeatureStrictEnabled) // Dev10 allows the null literal.
Binder\PatternExplainer.cs (8)
612void addRelation(BinaryOperatorKind relation, ConstantValue value) 654field.GetConstantValue(ConstantFieldsInProgress.Empty, false) is ConstantValue constantValue && 664var sample = remainingValues.Sample; 676if (remainingValues.Any(BinaryOperatorKind.GreaterThan, ConstantValue.Create(int.MaxValue))) 679if (remainingValues.Any(BinaryOperatorKind.LessThan, ConstantValue.Create(int.MinValue))) 684if (remainingValues.Any(BinaryOperatorKind.GreaterThan, ConstantValue.Create(uint.MaxValue))) 691private static string ValueString(ConstantValue value, TypeSymbol type, bool requireExactType) 714private static string PrimitiveValueString(ConstantValue value, TypeSymbol type)
Binder\Semantics\Conversions\Conversions.cs (2)
75var defaultValue = p.ExplicitDefaultConstantValue; 76if (defaultValue != ConstantValue.NotAvailable)
Binder\Semantics\Conversions\ConversionsBase.cs (4)
1351var constantValue = source.ConstantValueOpt; 1460var sourceConstantValue = source.ConstantValueOpt; 1757BoundLiteral intMaxValueLiteral = new BoundLiteral(syntaxNode, ConstantValue.Create(int.MaxValue), expectedAttributeType); 2066private static bool IsConstantNumericZero(ConstantValue value)
Binder\SwitchBinder.cs (6)
107var constantValue = label.SwitchCaseLabelConstant; 205ConstantValue boundLabelConstantOpt = null; 240protected BoundExpression ConvertCaseExpression(CSharpSyntaxNode node, BoundExpression caseExpression, out ConstantValue constantValueOpt, BindingDiagnosticBag diagnostics, bool isGotoCaseExpr = false) 277protected static object KeyForConstant(ConstantValue constantValue) 283protected SourceLabelSymbol FindMatchingSwitchCaseLabel(ConstantValue constantValue, CSharpSyntaxNode labelSyntax) 480ConstantValue gotoCaseExpressionConstant = null;
BoundTree\BoundBinaryOperator.UncommonData.cs (4)
15public static UncommonData UnconvertedInterpolatedStringAddition(ConstantValue? constantValue) => 33public static UncommonData? CreateIfNeeded(ConstantValue? constantValue, MethodSymbol? method, TypeSymbol? constrainedToType, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt) 43public readonly ConstantValue? ConstantValue; 54private UncommonData(ConstantValue? constantValue, MethodSymbol? method, TypeSymbol? constrainedToType, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, bool isUnconvertedInterpolatedStringAddition, InterpolatedStringHandlerData? interpolatedStringHandlerData)
BoundTree\BoundDecisionDag.cs (1)
152ConstantValue inputConstant = input.ConstantValueOpt;
BoundTree\BoundExpression.cs (6)
101public virtual ConstantValue? ConstantValueOpt 239public override ConstantValue? ConstantValueOpt 303public BoundLocal(SyntaxNode syntax, LocalSymbol localSymbol, ConstantValue? constantValueOpt, TypeSymbol type, bool hasErrors = false) 308public BoundLocal Update(LocalSymbol localSymbol, ConstantValue? constantValueOpt, TypeSymbol type) 404public override ConstantValue? ConstantValueOpt => Data?.ConstantValue; 598public override ConstantValue? ConstantValueOpt
BoundTree\BoundExpressionExtensions.cs (1)
114var constValue = node.ConstantValueOpt;
BoundTree\BoundObjectCreationExpression.cs (3)
13ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, ConstantValue? constantValueOpt, 19ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, ConstantValue? constantValueOpt, BoundObjectInitializerExpressionBase? initializerExpressionOpt, TypeSymbol type) 26BitVector defaultArguments, ConstantValue? constantValueOpt, BoundObjectInitializerExpressionBase? initializerExpressionOpt, TypeSymbol type)
BoundTree\Constructors.cs (12)
18ConstantValue? constantValueOpt, 28ConstantValue? constantValueOpt, 40ConstantValue? constantValueOpt, 52ConstantValue? constantValueOpt, 328public static BoundConversion SynthesizedNonUserDefined(SyntaxNode syntax, BoundExpression operand, Conversion conversion, TypeSymbol type, ConstantValue? constantValueOpt = null) 355ConstantValue? constantValueOpt, 381ConstantValue? constantValueOpt, 405ConstantValue? constantValueOpt, 426ConstantValue? constantValueOpt, 439ConstantValue? constantValueOpt, 675ConstantValue? constantValueOpt, 687ConstantValue? constantValueOpt,
BoundTree\LengthBasedStringSwitchData.cs (1)
137internal static LengthBasedStringSwitchData Create(ImmutableArray<(ConstantValue value, LabelSymbol label)> inputCases)
CodeGen\CodeGenerator.cs (1)
463_builder.EmitConstantValue(ConstantValue.Create(true), syntaxNode);
CodeGen\EmitArrayInitializer.cs (4)
216private static ConstantValue AsConstOrDefault(BoundExpression init) 218ConstantValue initConstantValueOpt = init.ConstantValueOpt; 226return ConstantValue.Default(type.SpecialType); 706ImmutableArray<ConstantValue> constants = initializers.SelectAsArray(static init => init.ConstantValueOpt!);
CodeGen\EmitExpression.cs (5)
43var constantValue = expression.ConstantValueOpt; 414var receiverConstant = receiver.ConstantValueOpt; 1518var constVal = receiver.ConstantValueOpt; 3466var constantValue = type.GetDefaultValue(); 3503private void EmitConstantExpression(TypeSymbol type, ConstantValue constantValue, bool used, SyntaxNode syntaxNode)
CodeGen\EmitOperators.cs (4)
360var constant = binOp.Left.ConstantValueOpt; 454private void EmitIsNotNullOrZero(BoundExpression comparand, ConstantValue nullOrZero) 468private void EmitIsNullOrZero(BoundExpression comparand, ConstantValue nullOrZero) 498var constantValue = condition.ConstantValueOpt;
CodeGen\EmitStatement.cs (13)
1243dispatch.Cases.Select(p => new KeyValuePair<ConstantValue, object>(p.value, p.label)).ToArray(), 1250KeyValuePair<ConstantValue, object>[] switchCaseLabels, 1410lengthBasedSwitchInfo.LengthBasedJumpTable.LengthCaseLabels.Select(p => new KeyValuePair<ConstantValue, object>(ConstantValue.Create(p.value), p.label)).ToArray(), 1450charJumpTable.CharCaseLabels.Select(p => new KeyValuePair<ConstantValue, object>(ConstantValue.Create(p.value), p.label)).ToArray(), 1470stringJumpTable.StringCaseLabels.Select(p => new KeyValuePair<ConstantValue, object>(ConstantValue.Create(p.value), p.label)).ToArray(), 1486KeyValuePair<ConstantValue, object>[] switchCaseLabels, 1564if (stringConstant == ConstantValue.Null) 1690private void EmitStringCompareAndBranch(LocalOrParameter key, SyntaxNode syntaxNode, ConstantValue stringConstant, object targetLabel, Microsoft.Cci.IReference stringEqualityMethodRef) 1728private void EmitCharCompareAndBranch(LocalOrParameter key, SyntaxNode syntaxNode, ConstantValue stringConstant, object targetLabel, Cci.IReference sequenceEqualsRef, Cci.IReference asSpanRef) 1987var casesBuilder = ArrayBuilder<(ConstantValue, LabelSymbol)>.GetInstance();
CodeGen\Optimizer.cs (1)
2415internal override ConstantValue GetConstantValue(SyntaxNode node, LocalSymbol inProgress, BindingDiagnosticBag diagnostics)
Compilation\CSharpCompilation.cs (3)
2214var dumbInstance = new BoundLiteral(syntax, ConstantValue.Null, namedType); 2355internal override IConvertibleConversion ClassifyConvertibleConversion(IOperation source, ITypeSymbol? destination, out ConstantValue? constantValue) 2366ConstantValue? sourceConstantValue = source.GetConstantValue();
Compilation\MemberSemanticModel.cs (1)
1264ConstantValue constantValue = boundExpr.ConstantValueOpt;
Compiler\MethodBodySynthesizer.cs (8)
106ImmutableArray.Create<BoundExpression>(new BoundLiteral(syntax, ConstantValue.Create(slotIndex), intType) { WasCompilerGenerated = true }), 122new BoundFieldAccess(syntax, thisReference, hostObjectField, ConstantValue.NotAvailable) { WasCompilerGenerated = true }, 126ImmutableArray.Create<BoundExpression>(new BoundLiteral(syntax, ConstantValue.Create(0), intType) { WasCompilerGenerated = true }), 132ConstantValue.NotAvailable, 150new BoundFieldAccess(syntax, thisReference, field, ConstantValue.NotAvailable) { WasCompilerGenerated = true }, 154ImmutableArray.Create<BoundExpression>(new BoundLiteral(syntax, ConstantValue.Create(targetSubmissionIndex), intType) { WasCompilerGenerated = true }), 161ConstantValue.NotAvailable, 188var fieldAccess = new BoundFieldAccess(syntax, thisReference, field, ConstantValue.NotAvailable) { WasCompilerGenerated = true };
Compiler\MethodCompiler.cs (1)
581ConstantValue constantValue = fieldSymbol.GetConstantValue(ConstantFieldsInProgress.Empty, earlyDecodingWellKnownAttributes: false);
Emitter\Model\ParameterSymbolAdapter.cs (1)
84ConstantValue constant = AdaptedParameterSymbol.ExplicitDefaultConstantValue;
FlowAnalysis\AbstractFlowPass.cs (3)
677return node.ConstantValueOpt == ConstantValue.True; 682return node.ConstantValueOpt == ConstantValue.False; 687return node.ConstantValueOpt == ConstantValue.Null;
FlowAnalysis\DefiniteAssignment.cs (1)
909return value.ConstantValueOpt != ConstantValue.Null;
FlowAnalysis\NullableWalker.cs (1)
8362return expr.ConstantValueOpt == ConstantValue.NotAvailable || !expr.ConstantValueOpt.IsNull || expr.IsSuppressed ? NullableAnnotation.NotAnnotated : NullableAnnotation.Annotated;
FlowAnalysis\NullableWalker.DebugVerifier.cs (1)
371if (node.WhenClause?.ConstantValueOpt != ConstantValue.True)
FlowAnalysis\NullableWalker.PlaceholderLocal.cs (1)
61internal override ConstantValue GetConstantValue(SyntaxNode node, LocalSymbol inProgress, BindingDiagnosticBag diagnostics = null) => null;
FlowAnalysis\NullableWalker_Patterns.cs (4)
167bool isExplicitNullCheck = cp.Value.ConstantValueOpt == ConstantValue.Null; 633Debug.Assert(t.Value != ConstantValue.Null); 649bool isFalseTest = t.Value == ConstantValue.False; 707if (w.WhenExpression != null && w.WhenExpression.ConstantValueOpt != ConstantValue.True)
Generated\BoundNodes.xml.Generated.cs (56)
1164public BoundUnaryOperator(SyntaxNode syntax, UnaryOperatorKind operatorKind, BoundExpression operand, ConstantValue? constantValueOpt, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type, bool hasErrors = false) 1183public override ConstantValue? ConstantValueOpt { get; } 1192public BoundUnaryOperator Update(UnaryOperatorKind operatorKind, BoundExpression operand, ConstantValue? constantValueOpt, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type) 1955public BoundUnconvertedConditionalOperator(SyntaxNode syntax, BoundExpression condition, BoundExpression consequence, BoundExpression alternative, ConstantValue? constantValueOpt, ErrorCode noCommonTypeError, bool hasErrors = false) 1974public override ConstantValue? ConstantValueOpt { get; } 1980public BoundUnconvertedConditionalOperator Update(BoundExpression condition, BoundExpression consequence, BoundExpression alternative, ConstantValue? constantValueOpt, ErrorCode noCommonTypeError) 1994public BoundConditionalOperator(SyntaxNode syntax, bool isRef, BoundExpression condition, BoundExpression consequence, BoundExpression alternative, ConstantValue? constantValueOpt, TypeSymbol? naturalTypeOpt, bool wasTargetTyped, TypeSymbol type, bool hasErrors = false) 2017public override ConstantValue? ConstantValueOpt { get; } 2024public BoundConditionalOperator Update(bool isRef, BoundExpression condition, BoundExpression consequence, BoundExpression alternative, ConstantValue? constantValueOpt, TypeSymbol? naturalTypeOpt, bool wasTargetTyped, TypeSymbol type) 2810public BoundDefaultExpression(SyntaxNode syntax, BoundTypeExpression? targetType, ConstantValue? constantValueOpt, TypeSymbol type, bool hasErrors = false) 2822public override ConstantValue? ConstantValueOpt { get; } 2827public BoundDefaultExpression Update(BoundTypeExpression? targetType, ConstantValue? constantValueOpt, TypeSymbol type) 2913public BoundSizeOfOperator(SyntaxNode syntax, BoundTypeExpression sourceType, ConstantValue? constantValueOpt, TypeSymbol type, bool hasErrors = false) 2926public override ConstantValue? ConstantValueOpt { get; } 2931public BoundSizeOfOperator Update(BoundTypeExpression sourceType, ConstantValue? constantValueOpt, TypeSymbol type) 2945public BoundConversion(SyntaxNode syntax, BoundExpression operand, Conversion conversion, bool isBaseConversion, bool @checked, bool explicitCastInCode, ConstantValue? constantValueOpt, ConversionGroup? conversionGroupOpt, TypeSymbol type, bool hasErrors = false) 2967public override ConstantValue? ConstantValueOpt { get; } 2973public BoundConversion Update(BoundExpression operand, Conversion conversion, bool isBaseConversion, bool @checked, bool explicitCastInCode, ConstantValue? constantValueOpt, ConversionGroup? conversionGroupOpt, TypeSymbol type) 3807public BoundSwitchDispatch(SyntaxNode syntax, BoundExpression expression, ImmutableArray<(ConstantValue value, LabelSymbol label)> cases, LabelSymbol defaultLabel, LengthBasedStringSwitchData? lengthBasedStringSwitchDataOpt, bool hasErrors = false) 3822public ImmutableArray<(ConstantValue value, LabelSymbol label)> Cases { get; } 3829public BoundSwitchDispatch Update(BoundExpression expression, ImmutableArray<(ConstantValue value, LabelSymbol label)> cases, LabelSymbol defaultLabel, LengthBasedStringSwitchData? lengthBasedStringSwitchDataOpt) 4292public BoundLiteral(SyntaxNode syntax, ConstantValue? constantValueOpt, TypeSymbol? type, bool hasErrors) 4298public BoundLiteral(SyntaxNode syntax, ConstantValue? constantValueOpt, TypeSymbol? type) 4304public override ConstantValue? ConstantValueOpt { get; } 4309public BoundLiteral Update(ConstantValue? constantValueOpt, TypeSymbol? type) 4497public BoundLocal(SyntaxNode syntax, LocalSymbol localSymbol, BoundLocalDeclarationKind declarationKind, ConstantValue? constantValueOpt, bool isNullableUnknown, TypeSymbol type, bool hasErrors) 4510public BoundLocal(SyntaxNode syntax, LocalSymbol localSymbol, BoundLocalDeclarationKind declarationKind, ConstantValue? constantValueOpt, bool isNullableUnknown, TypeSymbol type) 4526public override ConstantValue? ConstantValueOpt { get; } 4532public BoundLocal Update(LocalSymbol localSymbol, BoundLocalDeclarationKind declarationKind, ConstantValue? constantValueOpt, bool isNullableUnknown, TypeSymbol type) 5304public BoundDagValueTest(SyntaxNode syntax, ConstantValue value, BoundDagTemp input, bool hasErrors = false) 5314public ConstantValue Value { get; } 5319public BoundDagValueTest Update(ConstantValue value, BoundDagTemp input) 5333public BoundDagRelationalTest(SyntaxNode syntax, BinaryOperatorKind operatorKind, ConstantValue value, BoundDagTemp input, bool hasErrors = false) 5345public ConstantValue Value { get; } 5350public BoundDagRelationalTest Update(BinaryOperatorKind operatorKind, ConstantValue value, BoundDagTemp input) 6333public BoundObjectCreationExpression(SyntaxNode syntax, MethodSymbol constructor, ImmutableArray<MethodSymbol> constructorsGroup, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, ConstantValue? constantValueOpt, BoundObjectInitializerExpressionBase? initializerExpressionOpt, bool wasTargetTyped, TypeSymbol type, bool hasErrors = false) 6363public override ConstantValue? ConstantValueOpt { get; } 6370public BoundObjectCreationExpression Update(MethodSymbol constructor, ImmutableArray<MethodSymbol> constructorsGroup, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, ConstantValue? constantValueOpt, BoundObjectInitializerExpressionBase? initializerExpressionOpt, bool wasTargetTyped, TypeSymbol type) 7249public BoundFieldAccess(SyntaxNode syntax, BoundExpression? receiverOpt, FieldSymbol fieldSymbol, ConstantValue? constantValueOpt, LookupResultKind resultKind, bool isByValue, bool isDeclaration, TypeSymbol type, bool hasErrors = false) 7267public override ConstantValue? ConstantValueOpt { get; } 7275public BoundFieldAccess Update(BoundExpression? receiverOpt, FieldSymbol fieldSymbol, ConstantValue? constantValueOpt, LookupResultKind resultKind, bool isByValue, bool isDeclaration, TypeSymbol type) 7735public BoundNameOfOperator(SyntaxNode syntax, BoundExpression argument, ConstantValue constantValueOpt, TypeSymbol type, bool hasErrors = false) 7749public override ConstantValue ConstantValueOpt { get; } 7754public BoundNameOfOperator Update(BoundExpression argument, ConstantValue constantValueOpt, TypeSymbol type) 7768protected BoundInterpolatedStringBase(BoundKind kind, SyntaxNode syntax, ImmutableArray<BoundExpression> parts, ConstantValue? constantValueOpt, TypeSymbol? type, bool hasErrors = false) 7779public override ConstantValue? ConstantValueOpt { get; } 7784public BoundUnconvertedInterpolatedString(SyntaxNode syntax, ImmutableArray<BoundExpression> parts, ConstantValue? constantValueOpt, TypeSymbol? type, bool hasErrors = false) 7796public BoundUnconvertedInterpolatedString Update(ImmutableArray<BoundExpression> parts, ConstantValue? constantValueOpt, TypeSymbol? type) 7810public BoundInterpolatedString(SyntaxNode syntax, InterpolatedStringHandlerData? interpolationData, ImmutableArray<BoundExpression> parts, ConstantValue? constantValueOpt, TypeSymbol? type, bool hasErrors = false) 7824public BoundInterpolatedString Update(InterpolatedStringHandlerData? interpolationData, ImmutableArray<BoundExpression> parts, ConstantValue? constantValueOpt, TypeSymbol? type) 8009public BoundConstantPattern(SyntaxNode syntax, BoundExpression value, ConstantValue constantValue, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false) 8027public ConstantValue ConstantValue { get; } 8032public BoundConstantPattern Update(BoundExpression value, ConstantValue constantValue, TypeSymbol inputType, TypeSymbol narrowedType) 8516public BoundRelationalPattern(SyntaxNode syntax, BinaryOperatorKind relation, BoundExpression value, ConstantValue constantValue, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false) 8536public ConstantValue ConstantValue { get; } 8541public BoundRelationalPattern Update(BinaryOperatorKind relation, BoundExpression value, ConstantValue constantValue, TypeSymbol inputType, TypeSymbol narrowedType)
Lowering\DiagnosticsPass_Warnings.cs (4)
392private void CheckVacuousComparisons(BoundBinaryOperator tree, ConstantValue constantValue, BoundNode operand) 548ConstantValue constVal = GetConstantValueForBitwiseOrCheck(leftOperand); 572private static ConstantValue GetConstantValueForBitwiseOrCheck(BoundExpression operand) 586ConstantValue constVal = operand.ConstantValueOpt;
Lowering\Extensions.cs (1)
80if ((object)expr.Type == null && expr.ConstantValueOpt == ConstantValue.Null)
Lowering\LocalRewriter\LocalRewriter.cs (2)
256ConstantValue? constantValue = node.ConstantValueOpt; 318var result = new BoundFieldAccess(node.Syntax, new BoundThisReference(node.Syntax, primaryCtor.ContainingType), field, ConstantValue.NotAvailable, LookupResultKind.Viable, node.Type);
Lowering\LocalRewriter\LocalRewriter.DecisionDagRewriter.cs (20)
589var cases = ArrayBuilder<(ConstantValue value, LabelSymbol label)>.GetInstance(); 620ImmutableArray<(ConstantValue value, LabelSymbol label)> cases, 643(ImmutableArray<(ConstantValue value, LabelSymbol label)> whenTrueCases, ImmutableArray<(ConstantValue value, LabelSymbol label)> whenFalseCases) 644splitCases(ImmutableArray<(ConstantValue value, LabelSymbol label)> cases, BinaryOperatorKind op, ConstantValue value) 646var whenTrueBuilder = ArrayBuilder<(ConstantValue value, LabelSymbol label)>.GetInstance(); 647var whenFalseBuilder = ArrayBuilder<(ConstantValue value, LabelSymbol label)>.GetInstance(); 704private sealed class CasesComparer : IComparer<(ConstantValue value, LabelSymbol label)> 713int IComparer<(ConstantValue value, LabelSymbol label)>.Compare((ConstantValue value, LabelSymbol label) left, (ConstantValue value, LabelSymbol label) right) 715var x = left.value; 716var y = right.value; 736static bool isNaN(ConstantValue value) => 787ImmutableArray<(ConstantValue value, LabelSymbol label)> cases; 793cases = node.Cases.SelectAsArray(p => (ConstantValue.Create((long)p.value.Int32Value), p.label)); 799cases = node.Cases.SelectAsArray(p => (ConstantValue.Create((ulong)p.value.UInt32Value), p.label)); 1009if (whenExpression is not null && whenExpression.ConstantValueOpt != ConstantValue.True) 1161if (whenClause.WhenExpression != null && whenClause.WhenExpression.ConstantValueOpt != ConstantValue.True)
Lowering\LocalRewriter\LocalRewriter.DecisionDagRewriter.ValueDispatchNode.cs (6)
38public readonly ImmutableArray<(ConstantValue value, LabelSymbol label)> Cases; 40public SwitchDispatch(SyntaxNode syntax, ImmutableArray<(ConstantValue value, LabelSymbol label)> dispatches, LabelSymbol otherwise) : base(syntax) 80public readonly ConstantValue Value; 86private RelationalDispatch(SyntaxNode syntax, ConstantValue value, BinaryOperatorKind op, ValueDispatchNode left, ValueDispatchNode right) : base(syntax) 133public static ValueDispatchNode CreateBalanced(SyntaxNode syntax, ConstantValue value, BinaryOperatorKind op, ValueDispatchNode whenTrue, ValueDispatchNode whenFalse) 140private static ValueDispatchNode CreateBalancedCore(SyntaxNode syntax, ConstantValue value, BinaryOperatorKind op, ValueDispatchNode left, ValueDispatchNode right)
Lowering\LocalRewriter\LocalRewriter.PatternLocalRewriter.cs (4)
383_factory.Convert(operandType, new BoundLiteral(syntax, ConstantValue.Null, objectType)), 391protected BoundExpression MakeValueTest(SyntaxNode syntax, BoundExpression input, ConstantValue value) 405protected BoundExpression MakeRelationalTest(SyntaxNode syntax, BoundExpression input, BinaryOperatorKind operatorKind, ConstantValue value) 435private BoundExpression MakeSpanStringTest(BoundExpression input, ConstantValue value)
Lowering\LocalRewriter\LocalRewriter_AsOperator.cs (1)
51ConstantValue constantValue = Binder.GetAsOperatorConstantResult(rewrittenOperand.Type, rewrittenType, conversion.Kind, rewrittenOperand.ConstantValueOpt);
Lowering\LocalRewriter\LocalRewriter_BinaryOperator.cs (49)
287if (loweredRight.ConstantValueOpt == ConstantValue.True) return loweredLeft; 288if (loweredLeft.ConstantValueOpt == ConstantValue.True) return loweredRight; 289if (loweredLeft.ConstantValueOpt == ConstantValue.False) return loweredLeft; 299if (loweredRight.ConstantValueOpt == ConstantValue.False) return loweredLeft; 300if (loweredLeft.ConstantValueOpt == ConstantValue.False) return loweredRight; 301if (loweredLeft.ConstantValueOpt == ConstantValue.True) return loweredLeft; 311if (loweredRight.ConstantValueOpt == ConstantValue.True) return loweredLeft; 312if (loweredLeft.ConstantValueOpt == ConstantValue.True) return loweredRight; 332if (loweredRight.ConstantValueOpt == ConstantValue.False) return loweredLeft; 333if (loweredLeft.ConstantValueOpt == ConstantValue.False) return loweredRight; 337if (loweredLeft.ConstantValueOpt == ConstantValue.True) return loweredRight; 338if (loweredRight.ConstantValueOpt == ConstantValue.True) return loweredLeft; 342if (loweredLeft.ConstantValueOpt == ConstantValue.False) 345if (loweredRight.ConstantValueOpt == ConstantValue.False) 351if (loweredLeft.ConstantValueOpt == ConstantValue.False) return loweredRight; 352if (loweredRight.ConstantValueOpt == ConstantValue.False) return loweredLeft; 356if (loweredLeft.ConstantValueOpt == ConstantValue.True) 359if (loweredRight.ConstantValueOpt == ConstantValue.True) 365if (loweredLeft.ConstantValueOpt == ConstantValue.False) return loweredRight; 366if (loweredRight.ConstantValueOpt == ConstantValue.False) return loweredLeft; 370if (loweredLeft.ConstantValueOpt == ConstantValue.True) 373if (loweredRight.ConstantValueOpt == ConstantValue.True) 632ConstantValue? constantLeft = loweredLeft.ConstantValueOpt ?? UnboxConstant(loweredLeft); 633if (testOperator == UnaryOperatorKind.DynamicFalse && constantLeft == ConstantValue.False || 634testOperator == UnaryOperatorKind.DynamicTrue && constantLeft == ConstantValue.True) 676bool leftTestIsConstantFalse = testOperator == UnaryOperatorKind.DynamicFalse && constantLeft == ConstantValue.True || 677testOperator == UnaryOperatorKind.DynamicTrue && constantLeft == ConstantValue.False; 718private static ConstantValue? UnboxConstant(BoundExpression expression) 756return new BoundUnaryOperator(syntax, UnaryOperatorKind.BoolLogicalNegation, converted, ConstantValue.NotAvailable, MethodSymbol.None, constrainedToTypeOpt: null, LookupResultKind.Viable, boolean) 834return MakeLiteral(syntax, ConstantValue.Create(kind.Operator() == BinaryOperatorKind.Equal), boolType); 861BoundExpression result = MakeLiteral(syntax, ConstantValue.Create(operatorKind == BinaryOperatorKind.NotEqual), boolType); 926return MakeLiteral(syntax, ConstantValue.Create(value), _compilation.GetSpecialType(SpecialType.System_Boolean)); 1122[NotNullWhen(returnValue: true)] ConstantValue? constantValue) 1279rewrittenAlternative: MakeLiteral(syntax, ConstantValue.Create(operatorKind == BinaryOperatorKind.Equal), boolType), 1647ConstantValue.NotAvailable, 1969return MakeLiteral(syntax, ConstantValue.Create(kind == BinaryOperatorKind.NullableNullEqual), returnType); 2008new BoundUnaryOperator(syntax, UnaryOperatorKind.BoolLogicalNegation, call, ConstantValue.NotAvailable, null, constrainedToTypeOpt: null, LookupResultKind.Viable, returnType); 2015if (oldNode != null && (loweredLeft.ConstantValueOpt == ConstantValue.Null || loweredRight.ConstantValueOpt == ConstantValue.Null)) 2109return MakeLiteral(syntax, ConstantValue.Create(rewrittenExpr.ConstantValueOpt.IsNull, ConstantValueTypeDiscriminator.Boolean), boolType); 2111return MakeLiteral(syntax, ConstantValue.Create(!rewrittenExpr.ConstantValueOpt.IsNull, ConstantValueTypeDiscriminator.Boolean), boolType); 2134MakeLiteral(syntax, ConstantValue.Null, objectType), 2154ConstantValue? rightConstantValue = loweredRight.ConstantValueOpt; 2167loweredRight = MakeLiteral(rightSyntax, ConstantValue.Create(shiftAmount), rightType); 2180MakeLiteral(rightSyntax, ConstantValue.Create(rightMask), rightType), 2226ConstantValue? rightConstantValue = loweredRight.ConstantValueOpt; 2300ConstantValue.NotAvailable, 2358var constVal = numericOperand.ConstantValueOpt; 2369var constVal = numericOperand.ConstantValueOpt;
Lowering\LocalRewriter\LocalRewriter_Call.cs (1)
1422ConstantValue.Create(0),
Lowering\LocalRewriter\LocalRewriter_CollectionExpression.cs (1)
750ConstantValue.Create(knownLength),
Lowering\LocalRewriter\LocalRewriter_ConditionalOperator.cs (4)
47ConstantValue? constantValueOpt, 51ConstantValue? conditionConstantValue = rewrittenCondition.ConstantValueOpt; 52if (conditionConstantValue == ConstantValue.True) 56else if (conditionConstantValue == ConstantValue.False)
Lowering\LocalRewriter\LocalRewriter_Conversion.cs (9)
267ConstantValue? constantValueOpt, 302ConstantValue? constantValueOpt, 845ConstantValue? constantValueOpt = null) 1326MakeConversionNode(null, syntax, conditional.Consequence, conversion, @checked, explicitCastInCode: false, constantValueOpt: ConstantValue.NotAvailable, rewrittenType: type), 1327MakeConversionNode(null, syntax, conditional.Alternative, conversion, @checked, explicitCastInCode: false, constantValueOpt: ConstantValue.NotAvailable, rewrittenType: type), 1328ConstantValue.NotAvailable, 1487ConstantValue? constantValueOpt, 1697private BoundExpression RewriteDecimalConversion(SyntaxNode syntax, BoundExpression operand, TypeSymbol fromType, TypeSymbol toType, bool @checked, bool isImplicit, ConstantValue? constantValueOpt) 1728private BoundExpression RewriteDecimalConversionCore(SyntaxNode syntax, BoundExpression operand, TypeSymbol fromType, TypeSymbol toType, bool isImplicit, ConstantValue? constantValueOpt)
Lowering\LocalRewriter\LocalRewriter_Event.cs (1)
223ConstantValue? constantValueOpt,
Lowering\LocalRewriter\LocalRewriter_Field.cs (1)
21ConstantValue? constantValueOpt,
Lowering\LocalRewriter\LocalRewriter_FixedStatement.cs (1)
573new BoundConditionalOperator(factory.Syntax, false, condition, consequenceAssignment, alternativeAssignment, ConstantValue.NotAvailable, localType, wasTargetTyped: false, localType));
Lowering\LocalRewriter\LocalRewriter_ForEachStatement.cs (6)
454right: MakeLiteral(forEachSyntax, constantValue: ConstantValue.Null, type: null), 633MakeLiteral(forEachSyntax, ConstantValue.Default(SpecialType.System_Int32), intType)); 922MakeLiteral(forEachSyntax, ConstantValue.Default(SpecialType.System_Int32), intType)); 1085constantValue: ConstantValue.Create(dimension, ConstantValueTypeDiscriminator.Int32), 1139constantValue: ConstantValue.Create(dimension, ConstantValueTypeDiscriminator.Int32), 1252constantValue: ConstantValue.Create(1),
Lowering\LocalRewriter\LocalRewriter_Index.cs (1)
18BoundExpression fromEnd = MakeLiteral(node.Syntax, ConstantValue.Create(true), booleanType);
Lowering\LocalRewriter\LocalRewriter_IsOperator.cs (6)
40return RewriteConstantIsOperator(receiver.Syntax, receiver, ConstantValue.False, rewrittenType); 44return MakeLiteral(syntax, ConstantValue.False, rewrittenType); 58ConstantValue constantValue = Binder.GetIsOperatorConstantResult(operandType, targetType, conversionKind, rewrittenOperand.ConstantValueOpt); 83ConstantValue constantValue, 86Debug.Assert(constantValue == ConstantValue.True || constantValue == ConstantValue.False);
Lowering\LocalRewriter\LocalRewriter_Literal.cs (14)
23private BoundExpression MakeLiteral(SyntaxNode syntax, ConstantValue constantValue, TypeSymbol? type, BoundLiteral? oldNodeOpt = null) 51private BoundExpression MakeDecimalLiteral(SyntaxNode syntax, ConstantValue constantValue) 100arguments.Add(new BoundLiteral(syntax, ConstantValue.Create((int)value), _compilation.GetSpecialType(SpecialType.System_Int32))); 106arguments.Add(new BoundLiteral(syntax, ConstantValue.Create((uint)value), _compilation.GetSpecialType(SpecialType.System_UInt32))); 112arguments.Add(new BoundLiteral(syntax, ConstantValue.Create((long)value), _compilation.GetSpecialType(SpecialType.System_Int64))); 118arguments.Add(new BoundLiteral(syntax, ConstantValue.Create((ulong)value), _compilation.GetSpecialType(SpecialType.System_UInt64))); 124arguments.Add(new BoundLiteral(syntax, ConstantValue.Create(low), _compilation.GetSpecialType(SpecialType.System_Int32))); 125arguments.Add(new BoundLiteral(syntax, ConstantValue.Create(mid), _compilation.GetSpecialType(SpecialType.System_Int32))); 126arguments.Add(new BoundLiteral(syntax, ConstantValue.Create(high), _compilation.GetSpecialType(SpecialType.System_Int32))); 127arguments.Add(new BoundLiteral(syntax, ConstantValue.Create(isNegative), _compilation.GetSpecialType(SpecialType.System_Boolean))); 128arguments.Add(new BoundLiteral(syntax, ConstantValue.Create(scale), _compilation.GetSpecialType(SpecialType.System_Byte))); 142private BoundExpression MakeDateTimeLiteral(SyntaxNode syntax, ConstantValue constantValue) 148arguments.Add(new BoundLiteral(syntax, ConstantValue.Create(constantValue.DateTimeValue.Ticks), _compilation.GetSpecialType(SpecialType.System_Int64))); 159constantValueOpt: ConstantValue.NotAvailable, initializerExpressionOpt: null, type: ctor.ContainingType);
Lowering\LocalRewriter\LocalRewriter_LockStatement.cs (2)
35Debug.Assert(rewrittenArgument.ConstantValueOpt == ConstantValue.Null); 145MakeLiteral(rewrittenArgument.Syntax, ConstantValue.False, boolType),
Lowering\LocalRewriter\LocalRewriter_PreviousSubmissionReference.cs (1)
24return new BoundFieldAccess(syntax, thisReference, targetScriptReference, ConstantValue.NotAvailable);
Lowering\LocalRewriter\LocalRewriter_StackAlloc.cs (2)
119var sizeConst = sizeOfExpression.ConstantValueOpt; 126var countConst = countExpression.ConstantValueOpt;
Lowering\LocalRewriter\LocalRewriter_StringConcat.cs (3)
322var constantValue = finalArguments[^1].ConstantValueOpt!; 326finalArguments[^1] = _factory.StringLiteral(ConstantValue.CreateFromRope(Rope.Concat(current, previous))); 335static Rope getRope(ConstantValue constantValue)
Lowering\LocalRewriter\LocalRewriter_TupleBinaryOperator.cs (5)
206return new BoundLiteral(expr.Syntax, ConstantValue.Null, expr.Type); 259return new BoundLiteral(left.Syntax, ConstantValue.Create(nullnull.Kind == BinaryOperatorKind.Equal), boolType); 318if (rightHasValue.ConstantValueOpt == ConstantValue.False) 326if (leftHasValue.ConstantValueOpt == ConstantValue.False) 569return new BoundLiteral(left.Syntax, ConstantValue.Create(operatorKind == BinaryOperatorKind.Equal), boolType);
Lowering\LocalRewriter\LocalRewriter_UnaryOperator.cs (17)
90var constant = UnboxConstant(loweredOperand); 91if (constant == ConstantValue.True || constant == ConstantValue.False) 343ConstantValue.NotAvailable, 898(TypeSymbol binaryOperandType, ConstantValue constantOne) = GetConstantOneForIncrement(_compilation, binaryOperatorKind); 1011return RewriteConditionalOperator(syntax, condition, consequence, alternative, ConstantValue.NotAvailable, operand.Type, isRef: false); 1243private static (TypeSymbol, ConstantValue) GetConstantOneForIncrement( 1247ConstantValue constantOne; 1252constantOne = ConstantValue.Create(1); 1255constantOne = ConstantValue.Create(1U); 1258constantOne = ConstantValue.Create(1L); 1261constantOne = ConstantValue.Create(1LU); 1264constantOne = ConstantValue.Create(1); 1267constantOne = ConstantValue.Create(1U); 1270constantOne = ConstantValue.Create(1f); 1273constantOne = ConstantValue.Create(1.0); 1276constantOne = ConstantValue.Create(1m);
Lowering\LocalRewriter\LocalRewriter_UsingStatement.cs (2)
128if (rewrittenExpression.ConstantValueOpt == ConstantValue.Null) 230if (boundLocal.ConstantValueOpt == ConstantValue.Null)
Lowering\StateMachineRewriter\ResumableStateMachineStateAllocator.cs (1)
98f.StringLiteral(ConstantValue.Create(errorCode.GetExceptionMessage())),
Lowering\SyntheticBoundNodeFactory.cs (21)
251return new BoundFieldAccess(Syntax, receiver, f, ConstantValue.NotAvailable, LookupResultKind.Viable, f.Type) { WasCompilerGenerated = true }; 575expression = BoundConversion.Synthesized(Syntax, expression, conversion, false, explicitCastInCode: false, conversionGroupOpt: null, ConstantValue.NotAvailable, CurrentFunction.ReturnType); 644return new BoundBinaryOperator(this.Syntax, kind, ConstantValue.NotAvailable, methodOpt: null, constrainedToTypeOpt: null, LookupResultKind.Viable, left, right, type) { WasCompilerGenerated = true }; 723return new BoundLiteral(Syntax, ConstantValue.Create(value), SpecialType(Microsoft.CodeAnalysis.SpecialType.System_Byte)) { WasCompilerGenerated = true }; 728return new BoundLiteral(Syntax, ConstantValue.Create(value), SpecialType(Microsoft.CodeAnalysis.SpecialType.System_Int32)) { WasCompilerGenerated = true }; 736return new BoundLiteral(Syntax, ConstantValue.Create(value), SpecialType(Microsoft.CodeAnalysis.SpecialType.System_UInt32)) { WasCompilerGenerated = true }; 739public BoundLiteral Literal(ConstantValue value, TypeSymbol type) 1094var caseBuilder = ArrayBuilder<(ConstantValue Value, LabelSymbol label)>.GetInstance(); 1105caseBuilder.Add((ConstantValue.Create(value), sectionLabel)); 1145return new BoundLiteral(Syntax, ConstantValue.Create(value), SpecialType(Microsoft.CodeAnalysis.SpecialType.System_Boolean)) { WasCompilerGenerated = true }; 1150var stringConst = ConstantValue.Create(value); 1154public BoundLiteral StringLiteral(ConstantValue stringConst) 1162return StringLiteral(ConstantValue.Create(stringValue)); 1165public BoundLiteral CharLiteral(ConstantValue charConst) 1173return CharLiteral(ConstantValue.Create(charValue)); 1250BoundExpression nullLiteral = new BoundLiteral(syntax, ConstantValue.Null, type) { WasCompilerGenerated = true }; 1781return Literal(ConstantValue.Create(rewrittenExpr.ConstantValueOpt.IsNull, ConstantValueTypeDiscriminator.Boolean), boolType); 1783return Literal(ConstantValue.Create(rewrittenExpr.ConstantValueOpt.IsNull, ConstantValueTypeDiscriminator.Boolean), boolType); 1803return RewriteNullableNullEquality(syntax, operatorKind, rewrittenExpr, Literal(ConstantValue.Null, objectType), boolType); 1888new BoundUnaryOperator(syntax, UnaryOperatorKind.BoolLogicalNegation, call, ConstantValue.NotAvailable, methodOpt: null, constrainedToTypeOpt: null, LookupResultKind.Viable, returnType);
Operations\CSharpOperationFactory.cs (21)
307ConstantValue? constantValue = (boundNode as BoundExpression)?.ConstantValueOpt; 445ConstantValue? constantValue = boundCall.ConstantValueOpt; 558ConstantValue? constantValue = boundLocal.ConstantValueOpt; 578ConstantValue? constantValue = boundFieldAccess.ConstantValueOpt; 678ConstantValue? constantValue = boundLiteral.ConstantValueOpt; 706ConstantValue? constantValue = boundObjectCreationExpression.ConstantValueOpt; 930ConstantValue? constantValue = boundCollectionElementInitializer.ConstantValueOpt; 1115ConstantValue? constantValue = boundConversion.ConstantValueOpt; 1189ConstantValue? constantValue = boundSizeOfOperator.ConstantValueOpt; 1287ConstantValue? constantValue = boundDefaultLiteral.ConstantValueOpt; 1296ConstantValue? constantValue = ((BoundExpression)boundDefaultExpression).ConstantValueOpt; 1339ConstantValue? constantValue = boundAssignmentOperator.ConstantValueOpt; 1438ConstantValue? constantValue = boundUnaryOperator.ConstantValueOpt; 1492ConstantValue? constantValue = boundBinaryOperator.ConstantValueOpt; 1524ConstantValue? constantValue = boundBinaryOperator.ConstantValueOpt; 1580ConstantValue? constantValue = boundConditionalOperator.ConstantValueOpt; 1591ConstantValue? constantValue = boundNullCoalescingOperator.ConstantValueOpt; 1673ConstantValue constantValue = boundNameOfOperator.ConstantValueOpt; 1833ConstantValue? constantValue = null; 2266ConstantValue? constantValue = boundInterpolatedString.ConstantValueOpt; 2900var constantValue = field.GetConstantValue(ConstantFieldsInProgress.Empty, earlyDecodingWellKnownAttributes: false);
Symbols\AnonymousTypes\AnonymousTypeField.cs (2)
27public readonly ConstantValue? DefaultValue; 42ConstantValue? defaultValue = null,
Symbols\AnonymousTypes\SynthesizedSymbols\AnonymousType.FieldSymbol.cs (1)
100internal override ConstantValue GetConstantValue(ConstantFieldsInProgress inProgress, bool earlyDecodingWellKnownAttributes)
Symbols\ConstantValueUtils.cs (9)
17public readonly ConstantValue Value; 20public EvaluatedConstant(ConstantValue value, ReadOnlyBindingDiagnostic<AssemblySymbol> diagnostics) 29public static ConstantValue EvaluateFieldConstant( 49var value = GetAndValidateConstantValue(boundValue.Value, symbol, symbol.Type, equalsValueNode.Value, diagnostics); 78internal static ConstantValue GetAndValidateConstantValue( 85var value = ConstantValue.Bad; 106var constantValue = boundValue.ConstantValueOpt; 108var unconvertedConstantValue = unconvertedBoundValue.ConstantValueOpt;
Symbols\FieldSymbol.cs (3)
158ConstantValue constantValue = GetConstantValue(ConstantFieldsInProgress.Empty, earlyDecodingWellKnownAttributes: false); 176ConstantValue constantValue = GetConstantValue(ConstantFieldsInProgress.Empty, earlyDecodingWellKnownAttributes: false); 181internal abstract ConstantValue GetConstantValue(ConstantFieldsInProgress inProgress, bool earlyDecodingWellKnownAttributes);
Symbols\FunctionPointers\FunctionPointerParameterSymbol.cs (1)
83internal override ConstantValue? ExplicitDefaultConstantValue => null;
Symbols\LocalSymbol.cs (3)
330ConstantValue constantValue = this.GetConstantValue(null, null, null); 348ConstantValue constantValue = this.GetConstantValue(null, null, null); 361internal abstract ConstantValue GetConstantValue(SyntaxNode node, LocalSymbol inProgress, BindingDiagnosticBag diagnostics = null);
Symbols\Metadata\PE\PEFieldSymbol.cs (8)
121private ConstantValue _lazyConstantValue = Microsoft.CodeAnalysis.ConstantValue.Unset; // Indicates an uninitialized ConstantValue 482internal override ConstantValue GetConstantValue(ConstantFieldsInProgress inProgress, bool earlyDecodingWellKnownAttributes) 484if (_lazyConstantValue == Microsoft.CodeAnalysis.ConstantValue.Unset) 486ConstantValue value = null; 497ConstantValue defaultValue; 508Microsoft.CodeAnalysis.ConstantValue.Unset); 601ConstantValue value;
Symbols\Metadata\PE\PEParameterSymbol.cs (12)
160private ConstantValue? _lazyDefaultValue = ConstantValue.Unset; 272_lazyDefaultValue = ConstantValue.NotAvailable; 532internal ConstantValue? ImportConstantValue(bool ignoreAttributes = false) 539ConstantValue? value = null; 554internal override ConstantValue? ExplicitDefaultConstantValue 559if (_lazyDefaultValue == ConstantValue.Unset) 564ConstantValue? value = ImportConstantValue(ignoreAttributes: !IsMetadataOptional); 565Interlocked.CompareExchange(ref _lazyDefaultValue, value, ConstantValue.Unset); 572private ConstantValue? GetDefaultDecimalOrDateTimeValue() 575ConstantValue? value = null; 1088ConstantValue defaultValue = this.ExplicitDefaultConstantValue;
Symbols\ParameterSymbol.cs (1)
255internal abstract ConstantValue? ExplicitDefaultConstantValue { get; }
Symbols\ReducedExtensionMethodSymbol.cs (2)
144var thisArgumentValue = new BoundLiteral(syntax, ConstantValue.Bad, thisType) { WasCompilerGenerated = true }; 146var otherArgumentValue = new BoundLiteral(syntax, ConstantValue.Bad, otherArgumentType) { WasCompilerGenerated = true };
Symbols\SignatureOnlyParameterSymbol.cs (1)
79internal override ConstantValue ExplicitDefaultConstantValue { get { throw ExceptionUtilities.Unreachable(); } }
Symbols\Source\FieldSymbolWithAttributesAndModifiers.cs (4)
265private void VerifyConstantValueMatches(ConstantValue attrValue, ref DecodeWellKnownAttributeArguments<AttributeSyntax, CSharpAttributeData, AttributeLocation> arguments) 270ConstantValue constValue; 289if (data.ConstValue == CodeAnalysis.ConstantValue.Unset) 298if (constValue != CodeAnalysis.ConstantValue.Unset)
Symbols\Source\GlobalExpressionVariable.cs (1)
64protected override ConstantValue MakeConstantValue(
Symbols\Source\SourceClonedParameterSymbol.cs (2)
74internal override ConstantValue ExplicitDefaultConstantValue 83internal override ConstantValue DefaultValueFromAttributes
Symbols\Source\SourceComplexParameterSymbol.cs (34)
39protected ConstantValue _lazyDefaultSyntaxValue; 80_lazyDefaultSyntaxValue = ConstantValue.Unset; 91internal sealed override ConstantValue ExplicitDefaultConstantValue 109internal sealed override ConstantValue DefaultValueFromAttributes 114return (data != null && data.DefaultParameterValue != ConstantValue.Unset) ? data.DefaultParameterValue : ConstantValue.NotAvailable; 243private ConstantValue DefaultSyntaxValue 251var previousValue = Interlocked.CompareExchange( 254ConstantValue.Unset); 255Debug.Assert(previousValue == ConstantValue.Unset); 273DefaultValueFromAttributes == ConstantValue.NotAvailable) 332var defaultValue = DefaultValueFromAttributes; 361private ConstantValue MakeDefaultExpression(BindingDiagnosticBag diagnostics, out Binder? binder, out BoundParameterEqualsValue? parameterEqualsValue) 369return ConstantValue.NotAvailable; 375return ConstantValue.NotAvailable; 388return ConstantValue.Bad; 395return ConstantValue.Bad; 412var value = convertedExpression.ConstantValueOpt ?? ConstantValue.Null; 708ConstantValue value; 711value = ConstantValue.Bad; 720if (paramData.DefaultParameterValue == ConstantValue.Unset) 898var value = DecodeDefaultParameterValueAttribute(description, attribute, syntax, diagnose: true, diagnosticsOpt: diagnostics); 916private void VerifyParamDefaultValueMatchesAttributeIfAny(ConstantValue value, SyntaxNode syntax, BindingDiagnosticBag diagnostics) 921var attrValue = data.DefaultParameterValue; 922if ((attrValue != ConstantValue.Unset) && 931private ConstantValue DecodeDefaultParameterValueAttribute(AttributeDescription description, CSharpAttributeData attribute, AttributeSyntax node, bool diagnose, BindingDiagnosticBag diagnosticsOpt) 950private ConstantValue DecodeDefaultParameterValueAttribute(CSharpAttributeData attribute, AttributeSyntax node, bool diagnose, BindingDiagnosticBag diagnosticsOpt) 961return ConstantValue.Bad; 982var constantValueDiscriminator = ConstantValue.GetDiscriminator(specialType); 999return ConstantValue.Bad; 1009return ConstantValue.Bad; 1020return ConstantValue.Bad; 1028return ConstantValue.Create(arg.ValueInternal, constantValueDiscriminator);
Symbols\Source\SourceEnumConstantSymbol.cs (9)
155protected override ConstantValue MakeConstantValue(HashSet<SourceFieldSymbolWithSyntaxReference> dependencies, bool earlyDecodingWellKnownAttributes, BindingDiagnosticBag diagnostics) 158return Microsoft.CodeAnalysis.ConstantValue.Default(constantType); 173protected override ConstantValue MakeConstantValue(HashSet<SourceFieldSymbolWithSyntaxReference> dependencies, bool earlyDecodingWellKnownAttributes, BindingDiagnosticBag diagnostics) 202protected override ConstantValue MakeConstantValue(HashSet<SourceFieldSymbolWithSyntaxReference> dependencies, bool earlyDecodingWellKnownAttributes, BindingDiagnosticBag diagnostics) 204var otherValue = _otherConstant.GetConstantValue(new ConstantFieldsInProgress(this, dependencies), earlyDecodingWellKnownAttributes); 207if (otherValue == Microsoft.CodeAnalysis.ConstantValue.Unset) 209return Microsoft.CodeAnalysis.ConstantValue.Unset; 213return Microsoft.CodeAnalysis.ConstantValue.Bad; 215ConstantValue value;
Symbols\Source\SourceFieldSymbol.cs (21)
175private ConstantValue _lazyConstantEarlyDecodingValue = Microsoft.CodeAnalysis.ConstantValue.Unset; 176private ConstantValue _lazyConstantValue = Microsoft.CodeAnalysis.ConstantValue.Unset; 237internal sealed override ConstantValue GetConstantValue(ConstantFieldsInProgress inProgress, bool earlyDecodingWellKnownAttributes) 239var value = this.GetLazyConstantValue(earlyDecodingWellKnownAttributes); 240if (value != Microsoft.CodeAnalysis.ConstantValue.Unset) 251return Microsoft.CodeAnalysis.ConstantValue.Unset; 282var value = this.GetLazyConstantValue(earlyDecodingWellKnownAttributes); 283if (value != Microsoft.CodeAnalysis.ConstantValue.Unset) 302(value != Microsoft.CodeAnalysis.ConstantValue.Unset) && 324if (this.GetLazyConstantValue(earlyDecodingWellKnownAttributes) != Microsoft.CodeAnalysis.ConstantValue.Unset) 336var value = MakeConstantValue(builder, earlyDecodingWellKnownAttributes, diagnostics); 346private ConstantValue GetLazyConstantValue(bool earlyDecodingWellKnownAttributes) 352ConstantValue value, 357Debug.Assert(value != Microsoft.CodeAnalysis.ConstantValue.Unset); 358Debug.Assert((GetLazyConstantValue(earlyDecodingWellKnownAttributes) == Microsoft.CodeAnalysis.ConstantValue.Unset) || 363Interlocked.CompareExchange(ref _lazyConstantEarlyDecodingValue, value, Microsoft.CodeAnalysis.ConstantValue.Unset); 367if (Interlocked.CompareExchange(ref _lazyConstantValue, value, Microsoft.CodeAnalysis.ConstantValue.Unset) == Microsoft.CodeAnalysis.ConstantValue.Unset) 381protected abstract ConstantValue MakeConstantValue(HashSet<SourceFieldSymbolWithSyntaxReference> dependencies, bool earlyDecodingWellKnownAttributes, BindingDiagnosticBag diagnostics);
Symbols\Source\SourceFixedFieldSymbol.cs (1)
98ConstantValue sizeConstant = ConstantValueUtils.GetAndValidateConstantValue(boundSizeExpression, this, intType, sizeExpression, diagnostics);
Symbols\Source\SourceLabelSymbol.cs (4)
21private readonly ConstantValue? _switchCaseLabelConstant; 29ConstantValue? switchCaseLabelConstant = null) 70ConstantValue switchCaseLabelConstant) 138public ConstantValue? SwitchCaseLabelConstant
Symbols\Source\SourceLocalSymbol.cs (5)
470internal override ConstantValue GetConstantValue(SyntaxNode node, LocalSymbol inProgress, BindingDiagnosticBag diagnostics) 579var value = Microsoft.CodeAnalysis.ConstantValue.Bad; 593internal override ConstantValue GetConstantValue(SyntaxNode node, LocalSymbol inProgress, BindingDiagnosticBag diagnostics = null) 602return Microsoft.CodeAnalysis.ConstantValue.Bad;
Symbols\Source\SourceMemberFieldSymbol.cs (4)
119var value = this.GetConstantValue(ConstantFieldsInProgress.Empty, earlyDecodingWellKnownAttributes: false); 127if (data == null || data.ConstValue == CodeAnalysis.ConstantValue.Unset) 149!(decodedData is FieldWellKnownAttributeData fieldData && fieldData.ConstValue != CodeAnalysis.ConstantValue.Unset)) 634protected sealed override ConstantValue MakeConstantValue(HashSet<SourceFieldSymbolWithSyntaxReference> dependencies, bool earlyDecodingWellKnownAttributes, BindingDiagnosticBag diagnostics)
Symbols\Source\SourceNamedTypeSymbol_Extension.cs (1)
1182var receiverValue = new BoundLiteral(syntax, ConstantValue.Bad, receiverType) { WasCompilerGenerated = true };
Symbols\Source\SourceParameterSymbolBase.cs (4)
67internal abstract ConstantValue DefaultValueFromAttributes { get; } 89var defaultValue = parameter.ExplicitDefaultConstantValue; 90if (defaultValue != ConstantValue.NotAvailable && 93sourceParameter.DefaultValueFromAttributes == ConstantValue.NotAvailable)
Symbols\Source\SourceSimpleParameterSymbol.cs (3)
48internal override ConstantValue? ExplicitDefaultConstantValue 160internal override ConstantValue DefaultValueFromAttributes 162get { return ConstantValue.NotAvailable; }
Symbols\Source\ThisParameterSymbol.cs (1)
23internal sealed override ConstantValue? ExplicitDefaultConstantValue
Symbols\Synthesized\SynthesizedBackingFieldSymbol.cs (1)
63internal override ConstantValue GetConstantValue(ConstantFieldsInProgress inProgress, bool earlyDecodingWellKnownAttributes)
Symbols\Synthesized\SynthesizedDelegateSymbol.cs (2)
35internal ParameterDescription(TypeWithAnnotations type, RefKind refKind, ScopedKind scope, ConstantValue? defaultValue, bool isParams, bool hasUnscopedRefAttribute) 48internal readonly ConstantValue? DefaultValue;
Symbols\Synthesized\SynthesizedFieldSymbolBase.cs (1)
135internal override ConstantValue GetConstantValue(ConstantFieldsInProgress inProgress, bool earlyDecodingWellKnownAttributes)
Symbols\Synthesized\SynthesizedLocal.cs (1)
190internal sealed override ConstantValue GetConstantValue(SyntaxNode node, LocalSymbol inProgress, BindingDiagnosticBag diagnostics)
Symbols\Synthesized\SynthesizedParameterSymbol.cs (10)
83internal override ConstantValue? ExplicitDefaultConstantValue 88internal virtual ConstantValue? DefaultValueFromAttributes => null; 208var defaultValue = this.ExplicitDefaultConstantValue; 209if (defaultValue != ConstantValue.NotAvailable && 210DefaultValueFromAttributes == ConstantValue.NotAvailable && 264ConstantValue? defaultValue = null, 344private readonly ConstantValue? _defaultValue; 354ConstantValue? defaultValue, 414internal override ConstantValue? ExplicitDefaultConstantValue => _baseParameterForAttributes?.ExplicitDefaultConstantValue ?? _defaultValue; 416internal override ConstantValue? DefaultValueFromAttributes => _baseParameterForAttributes?.DefaultValueFromAttributes;
Symbols\Synthesized\TypeSubstitutedLocalSymbol.cs (1)
124internal override ConstantValue GetConstantValue(SyntaxNode node, LocalSymbol inProgress, BindingDiagnosticBag diagnostics)
Symbols\TypedConstantExtensions.cs (6)
54ConstantValue valueConstant = ConstantValue.Create(constant.ValueInternal, splType); 89ConstantValue memberConstant = ConstantValue.Create(field.ConstantValue, specialType); 167ConstantValue memberConstant = ConstantValue.Create(field.ConstantValue, specialType);
Symbols\TypeSymbolExtensions.cs (3)
621public static ConstantValue? GetDefaultValue(this TypeSymbol type) 638return ConstantValue.Null; 662return ConstantValue.Default(type.SpecialType);
Symbols\UpdatedContainingSymbolLocal.cs (1)
93internal override ConstantValue GetConstantValue(SyntaxNode node, LocalSymbol inProgress, BindingDiagnosticBag? diagnostics = null) =>
Symbols\Wrapped\WrappedFieldSymbol.cs (1)
179internal override ConstantValue GetConstantValue(ConstantFieldsInProgress inProgress, bool earlyDecodingWellKnownAttributes)
Symbols\Wrapped\WrappedParameterSymbol.cs (1)
79internal sealed override ConstantValue? ExplicitDefaultConstantValue
Utilities\IValueSet.cs (5)
39bool Any(BinaryOperatorKind relation, ConstantValue value); 43/// Because of that all four combinations of results from <see cref="Any(BinaryOperatorKind, ConstantValue)"/> and <see cref="All(BinaryOperatorKind, ConstantValue)"/> 48bool All(BinaryOperatorKind relation, ConstantValue value); 59ConstantValue? Sample { get; }
Utilities\IValueSetFactory.cs (4)
18IValueSet Related(BinaryOperatorKind relation, ConstantValue value); 23bool Related(BinaryOperatorKind relation, ConstantValue left, ConstantValue right); 33ConstantValue RandomValue(Random random);
Utilities\ValueSetFactory.BoolValueSet.cs (4)
41ConstantValue IValueSet.Sample => ConstantValue.Create(_hasTrue ? true : _hasFalse ? false : throw new ArgumentException()); 56bool IValueSet.Any(BinaryOperatorKind relation, ConstantValue value) => value.IsBad || Any(relation, value.BooleanValue); 71bool IValueSet.All(BinaryOperatorKind relation, ConstantValue value) => !value.IsBad && All(relation, value.BooleanValue);
Utilities\ValueSetFactory.BoolValueSetFactory.cs (5)
51ConstantValue IValueSetFactory.RandomValue(Random random) => ConstantValue.Create(random.NextDouble() < 0.5); 53IValueSet IValueSetFactory.Related(BinaryOperatorKind relation, ConstantValue value) 58bool IValueSetFactory.Related(BinaryOperatorKind relation, ConstantValue left, ConstantValue right)
Utilities\ValueSetFactory.ByteTC.cs (3)
55byte INumericTC<byte>.FromConstantValue(ConstantValue constantValue) => constantValue.IsBad ? (byte)0 : constantValue.ByteValue; 57ConstantValue INumericTC<byte>.ToConstantValue(byte value) => ConstantValue.Create(value);
Utilities\ValueSetFactory.CharTC.cs (3)
49char INumericTC<char>.FromConstantValue(ConstantValue constantValue) => constantValue.IsBad ? (char)0 : constantValue.CharValue; 67ConstantValue INumericTC<char>.ToConstantValue(char value) => ConstantValue.Create(value);
Utilities\ValueSetFactory.DecimalTC.cs (3)
35public decimal FromConstantValue(ConstantValue constantValue) => constantValue.IsBad ? 0m : constantValue.DecimalValue; 37public ConstantValue ToConstantValue(decimal value) => ConstantValue.Create(value);
Utilities\ValueSetFactory.DecimalValueSetFactory.cs (5)
25ConstantValue IValueSetFactory.RandomValue(Random random) => ConstantValue.Create(DecimalTC.Instance.Random(random)); 27IValueSet IValueSetFactory.Related(BinaryOperatorKind relation, ConstantValue value) => 30bool IValueSetFactory.Related(BinaryOperatorKind relation, ConstantValue left, ConstantValue right) => _underlying.Related(relation, left, right);
Utilities\ValueSetFactory.DoubleTC.cs (3)
83double INumericTC<double>.FromConstantValue(ConstantValue constantValue) => constantValue.IsBad ? 0.0 : constantValue.DoubleValue; 85ConstantValue INumericTC<double>.ToConstantValue(double value) => ConstantValue.Create(value);
Utilities\ValueSetFactory.EnumeratedValueSet.cs (3)
48ConstantValue IValueSet.Sample 88bool IValueSet.Any(BinaryOperatorKind relation, ConstantValue value) => value.IsBad || Any(relation, _tc.FromConstantValue(value)); 111bool IValueSet.All(BinaryOperatorKind relation, ConstantValue value) => !value.IsBad && All(relation, _tc.FromConstantValue(value));
Utilities\ValueSetFactory.EnumeratedValueSetFactory.cs (4)
38IValueSet IValueSetFactory.Related(BinaryOperatorKind relation, ConstantValue value) => 41bool IValueSetFactory.Related(BinaryOperatorKind relation, ConstantValue left, ConstantValue right) 58ConstantValue IValueSetFactory.RandomValue(Random random)
Utilities\ValueSetFactory.FloatingValueSet.cs (4)
51ConstantValue IValueSet.Sample 60var sample = _numbers.Sample; 138bool IValueSet.Any(BinaryOperatorKind relation, ConstantValue value) => 148bool IValueSet.All(BinaryOperatorKind relation, ConstantValue value) => !value.IsBad && All(relation, _tc.FromConstantValue(value));
Utilities\ValueSetFactory.FloatingValueSetFactory.cs (4)
30ConstantValue IValueSetFactory.RandomValue(Random random) 35IValueSet IValueSetFactory.Related(BinaryOperatorKind relation, ConstantValue value) => 40bool IValueSetFactory.Related(BinaryOperatorKind relation, ConstantValue left, ConstantValue right)
Utilities\ValueSetFactory.IEqualableValueTC.cs (4)
18/// Get the constant value of type <typeparamref name="T"/> from a <see cref="ConstantValue"/>. This method is shared among all 21T FromConstantValue(ConstantValue constantValue); 24/// Translate a numeric value of type <typeparamref name="T"/> into a <see cref="ConstantValue"/>. 26ConstantValue ToConstantValue(T value);
Utilities\ValueSetFactory.IntTC.cs (3)
65public int FromConstantValue(ConstantValue constantValue) => constantValue.IsBad ? 0 : constantValue.Int32Value; 67public ConstantValue ToConstantValue(int value) => ConstantValue.Create(value);
Utilities\ValueSetFactory.INumericTC.cs (4)
18/// Get the constant value of type <typeparamref name="T"/> from a <see cref="ConstantValue"/>. This method is shared among all 21T FromConstantValue(ConstantValue constantValue); 24/// Translate a numeric value of type <typeparamref name="T"/> into a <see cref="ConstantValue"/>. 26ConstantValue ToConstantValue(T value);
Utilities\ValueSetFactory.LongTC.cs (3)
55long INumericTC<long>.FromConstantValue(ConstantValue constantValue) => constantValue.IsBad ? 0L : constantValue.Int64Value; 57ConstantValue INumericTC<long>.ToConstantValue(long value) => ConstantValue.Create(value);
Utilities\ValueSetFactory.NintValueSet.cs (3)
48ConstantValue? IValueSet.Sample 74bool IValueSet.All(BinaryOperatorKind relation, ConstantValue value) => value.IsBad || All(relation, value.Int32Value); 85bool IValueSet.Any(BinaryOperatorKind relation, ConstantValue value) => value.IsBad || Any(relation, value.Int32Value);
Utilities\ValueSetFactory.NintValueSetFactory.cs (5)
41ConstantValue IValueSetFactory.RandomValue(Random random) => ConstantValue.CreateNativeInt(IntTC.DefaultInstance.Random(random)); 43IValueSet IValueSetFactory.Related(BinaryOperatorKind relation, ConstantValue value) 48bool IValueSetFactory.Related(BinaryOperatorKind relation, ConstantValue left, ConstantValue right)
Utilities\ValueSetFactory.NonNegativeIntValueSetFactory.cs (4)
55ConstantValue IValueSetFactory.RandomValue(Random random) => s_underlying.RandomValue(random); 57IValueSet IValueSetFactory.Related(BinaryOperatorKind relation, ConstantValue value) => 60bool IValueSetFactory.Related(BinaryOperatorKind relation, ConstantValue left, ConstantValue right) => s_underlying.Related(relation, left, right);
Utilities\ValueSetFactory.NuintValueSet.cs (3)
39ConstantValue? IValueSet.Sample 63bool IValueSet.All(BinaryOperatorKind relation, ConstantValue value) => value.IsBad || All(relation, value.UInt32Value); 72bool IValueSet.Any(BinaryOperatorKind relation, ConstantValue value) => value.IsBad || Any(relation, value.UInt32Value);
Utilities\ValueSetFactory.NuintValueSetFactory.cs (5)
39ConstantValue IValueSetFactory.RandomValue(Random random) => ConstantValue.CreateNativeUInt(UIntTC.Instance.Random(random)); 41IValueSet IValueSetFactory.Related(BinaryOperatorKind relation, ConstantValue value) 46bool IValueSetFactory.Related(BinaryOperatorKind relation, ConstantValue left, ConstantValue right)
Utilities\ValueSetFactory.NumericValueSet.cs (3)
56ConstantValue IValueSet.Sample 107bool IValueSet.Any(BinaryOperatorKind relation, ConstantValue value) => value.IsBad || Any(relation, _tc.FromConstantValue(value)); 129bool IValueSet.All(BinaryOperatorKind relation, ConstantValue value) => !value.IsBad && All(relation, _tc.FromConstantValue(value));
Utilities\ValueSetFactory.NumericValueSetFactory.cs (4)
52IValueSet IValueSetFactory.Related(BinaryOperatorKind relation, ConstantValue value) => 58ConstantValue IValueSetFactory.RandomValue(Random random) 63bool IValueSetFactory.Related(BinaryOperatorKind relation, ConstantValue left, ConstantValue right)
Utilities\ValueSetFactory.SByteTC.cs (3)
54sbyte INumericTC<sbyte>.FromConstantValue(ConstantValue constantValue) => constantValue.IsBad ? (sbyte)0 : constantValue.SByteValue; 56public ConstantValue ToConstantValue(sbyte value) => ConstantValue.Create(value);
Utilities\ValueSetFactory.ShortTC.cs (3)
55short INumericTC<short>.FromConstantValue(ConstantValue constantValue) => constantValue.IsBad ? (short)0 : constantValue.Int16Value; 57ConstantValue INumericTC<short>.ToConstantValue(short value) => ConstantValue.Create(value);
Utilities\ValueSetFactory.SingleTC.cs (3)
87float INumericTC<float>.FromConstantValue(ConstantValue constantValue) => constantValue.IsBad ? 0.0F : constantValue.SingleValue; 89ConstantValue INumericTC<float>.ToConstantValue(float value) => ConstantValue.Create(value);
Utilities\ValueSetFactory.StringTC.cs (3)
17string IEquatableValueTC<string>.FromConstantValue(ConstantValue constantValue) 44ConstantValue IEquatableValueTC<string>.ToConstantValue(string value) => ConstantValue.Create(value);
Utilities\ValueSetFactory.UIntTC.cs (3)
49public uint FromConstantValue(ConstantValue constantValue) => constantValue.IsBad ? (uint)0 : constantValue.UInt32Value; 51public ConstantValue ToConstantValue(uint value) => ConstantValue.Create(value);
Utilities\ValueSetFactory.ULongTC.cs (3)
55ulong INumericTC<ulong>.FromConstantValue(ConstantValue constantValue) => constantValue.IsBad ? 0UL : constantValue.UInt64Value; 57ConstantValue INumericTC<ulong>.ToConstantValue(ulong value) => ConstantValue.Create(value);
Utilities\ValueSetFactory.UShortTC.cs (3)
49ushort INumericTC<ushort>.FromConstantValue(ConstantValue constantValue) => constantValue.IsBad ? (ushort)0 : constantValue.UInt16Value; 51ConstantValue INumericTC<ushort>.ToConstantValue(ushort value) => ConstantValue.Create(value);
Microsoft.CodeAnalysis.CSharp.Emit.UnitTests (1)
CodeGen\CodeGenOverridingAndHiding.cs (1)
4123Assert.Equal(ConstantValue.Null, parameterB.ExplicitDefaultConstantValue);
Microsoft.CodeAnalysis.CSharp.Emit2.UnitTests (1)
Emit\NumericIntPtrTests.cs (1)
2894var value = field.GetConstantValue(ConstantFieldsInProgress.Empty, earlyDecodingWellKnownAttributes: false);
Microsoft.CodeAnalysis.CSharp.Emit3.UnitTests (2)
Attributes\AttributeTests_WellKnownAttributes.cs (2)
531var constantValue = peModule.Module.GetParamDefaultValue(theParameter.Handle); 532Assert.Equal(ConstantValue.Null, constantValue);
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (55)
Semantics\ConstantTests.cs (26)
1463private static object ExtractValue(ConstantValue constantValue) 2301ConstantValue nonNullValue = ConstantValue.Create(10); 2302ConstantValue nullValue = null; 2310private static void ConstantEquals(ConstantValue a, ConstantValue b) 4007ConstantValue charConstant = ConstantValue.Create('c'), 4008byteConst = ConstantValue.Create(0x4), 4009sbyteConst = ConstantValue.Create(unchecked((sbyte)byte.MaxValue)), 4010shortConst = ConstantValue.Create(unchecked((short)ushort.MaxValue)), 4011ushortConst = ConstantValue.Create(ushort.MaxValue), 4012int32Const = ConstantValue.Create(unchecked((int)uint.MaxValue)), 4013uint32Const = ConstantValue.Create(uint.MaxValue), 4014nintConst = ConstantValue.CreateNativeInt(unchecked((int)uint.MaxValue)), 4015nuintConst = ConstantValue.CreateNativeUInt(uint.MaxValue), 4016int64Const = ConstantValue.Create(unchecked((long)ulong.MaxValue)), 4017uint64Const = ConstantValue.Create(ulong.MaxValue), 4018decimalConst = ConstantValue.Create(1m / 3m), 4019floatConst = ConstantValue.Create(Math.Round(1f / 3f, 5)), 4020doubleConst = ConstantValue.Create(Math.Round((double)1 / 3, 8)), 4021stringConst = ConstantValue.Create("abcdefghijklmnopqrstuvwxyz"), 4022dateTimeConst = ConstantValue.Create(DateTime.MaxValue), 4023boolConst = ConstantValue.Create(true), 4024badConst = ConstantValue.Bad, 4025nullConst = ConstantValue.Null;
Semantics\NamedAndOptionalTests.cs (25)
2061Assert.Equal(ConstantValue.Create(0), parameters[1].ExplicitDefaultConstantValue); 2067Assert.Equal(ConstantValue.Create(1), parameters[2].ExplicitDefaultConstantValue); 2080Assert.Equal(ConstantValue.Create(0), parameters[4].ExplicitDefaultConstantValue); 2087Assert.Equal(ConstantValue.Create(1), parameters[5].ExplicitDefaultConstantValue); 2093Assert.Equal(ConstantValue.Create(0), parameters[6].ExplicitDefaultConstantValue); 2099Assert.Equal(ConstantValue.Create(1), parameters[7].ExplicitDefaultConstantValue); 2143Assert.Equal(ConstantValue.Null, parameters[1].ExplicitDefaultConstantValue); 2194Assert.Equal(ConstantValue.Null, parameters[1].ExplicitDefaultConstantValue); 2200Assert.Equal(ConstantValue.Create("A"), parameters[2].ExplicitDefaultConstantValue); 2213Assert.Equal(ConstantValue.Null, parameters[4].ExplicitDefaultConstantValue); 2219Assert.Equal(ConstantValue.Null, parameters[5].ExplicitDefaultConstantValue); 2226Assert.Equal(ConstantValue.Create("A"), parameters[6].ExplicitDefaultConstantValue); 2232Assert.Equal(ConstantValue.Create("A"), parameters[7].ExplicitDefaultConstantValue); // not imported for non-optional parameter 2277Assert.Equal(ConstantValue.Create(0M), parameters[1].ExplicitDefaultConstantValue); 2283Assert.Equal(ConstantValue.Create(1M), parameters[2].ExplicitDefaultConstantValue); 2296Assert.Equal(isFromSource ? ConstantValue.Create(0M) : null, parameters[4].ExplicitDefaultConstantValue); // not imported for non-optional parameter 2303Assert.Equal(isFromSource ? ConstantValue.Create(1M) : null, parameters[5].ExplicitDefaultConstantValue); // not imported for non-optional parameter 2309Assert.Equal(ConstantValue.Create(0M), parameters[6].ExplicitDefaultConstantValue); 2315Assert.Equal(ConstantValue.Create(1M), parameters[7].ExplicitDefaultConstantValue); 2359Assert.Equal(ConstantValue.Null, parameters[1].ExplicitDefaultConstantValue); 2372Assert.Equal(isFromSource ? ConstantValue.Create(new DateTime(0)) : null, parameters[3].ExplicitDefaultConstantValue); // not imported for non-optional parameter 2379Assert.Equal(isFromSource ? ConstantValue.Create(new DateTime(1)) : null, parameters[4].ExplicitDefaultConstantValue); // not imported for non-optional parameter 2385Assert.Equal(ConstantValue.Create(new DateTime(0)), parameters[5].ExplicitDefaultConstantValue); 2391Assert.Equal(ConstantValue.Create(new DateTime(1)), parameters[6].ExplicitDefaultConstantValue); 2463Assert.Equal(ConstantValue.Bad, param.ExplicitDefaultConstantValue);
Semantics\NativeIntegerTests.cs (1)
7057var value = field.GetConstantValue(ConstantFieldsInProgress.Empty, earlyDecodingWellKnownAttributes: false);
Utilities\ValueSetTests.cs (3)
626ConstantValue value = fac.RandomValue(Random); 875ConstantValue badConstant = ConstantValue.Bad;
Microsoft.CodeAnalysis.CSharp.Symbol.UnitTests (101)
Compilation\GetSemanticInfoTests.cs (99)
888EnumOffset(ConstantValue.Create((sbyte)sbyte.MinValue), 1, EnumOverflowKind.NoOverflow, ConstantValue.Create((sbyte)(sbyte.MinValue + 1))); 889EnumOffset(ConstantValue.Create((sbyte)sbyte.MinValue), 2, EnumOverflowKind.NoOverflow, ConstantValue.Create((sbyte)(sbyte.MinValue + 2))); 890EnumOffset(ConstantValue.Create((sbyte)-2), 1, EnumOverflowKind.NoOverflow, ConstantValue.Create((sbyte)(-1))); 891EnumOffset(ConstantValue.Create((sbyte)-2), 3, EnumOverflowKind.NoOverflow, ConstantValue.Create((sbyte)(1))); 892EnumOffset(ConstantValue.Create((sbyte)(sbyte.MaxValue - 3)), 3, EnumOverflowKind.NoOverflow, ConstantValue.Create((sbyte)sbyte.MaxValue)); 893EnumOffset(ConstantValue.Create((sbyte)(sbyte.MaxValue - 3)), 4, EnumOverflowKind.OverflowReport, ConstantValue.Bad); 894EnumOffset(ConstantValue.Create((sbyte)(sbyte.MaxValue - 3)), 5, EnumOverflowKind.OverflowIgnore, ConstantValue.Bad); 897EnumOffset(ConstantValue.Create((byte)0), 1, EnumOverflowKind.NoOverflow, ConstantValue.Create((byte)1)); 898EnumOffset(ConstantValue.Create((byte)0), 2, EnumOverflowKind.NoOverflow, ConstantValue.Create((byte)2)); 899EnumOffset(ConstantValue.Create((byte)(byte.MaxValue - 3)), 3, EnumOverflowKind.NoOverflow, ConstantValue.Create((byte)byte.MaxValue)); 900EnumOffset(ConstantValue.Create((byte)(byte.MaxValue - 3)), 4, EnumOverflowKind.OverflowReport, ConstantValue.Bad); 901EnumOffset(ConstantValue.Create((byte)(byte.MaxValue - 3)), 5, EnumOverflowKind.OverflowIgnore, ConstantValue.Bad); 904EnumOffset(ConstantValue.Create((short)short.MinValue), 1, EnumOverflowKind.NoOverflow, ConstantValue.Create((short)(short.MinValue + 1))); 905EnumOffset(ConstantValue.Create((short)short.MinValue), 2, EnumOverflowKind.NoOverflow, ConstantValue.Create((short)(short.MinValue + 2))); 906EnumOffset(ConstantValue.Create((short)-2), 1, EnumOverflowKind.NoOverflow, ConstantValue.Create((short)(-1))); 907EnumOffset(ConstantValue.Create((short)-2), 3, EnumOverflowKind.NoOverflow, ConstantValue.Create((short)(1))); 908EnumOffset(ConstantValue.Create((short)(short.MaxValue - 3)), 3, EnumOverflowKind.NoOverflow, ConstantValue.Create((short)short.MaxValue)); 909EnumOffset(ConstantValue.Create((short)(short.MaxValue - 3)), 4, EnumOverflowKind.OverflowReport, ConstantValue.Bad); 910EnumOffset(ConstantValue.Create((short)(short.MaxValue - 3)), 5, EnumOverflowKind.OverflowIgnore, ConstantValue.Bad); 913EnumOffset(ConstantValue.Create((ushort)0), 1, EnumOverflowKind.NoOverflow, ConstantValue.Create((ushort)1)); 914EnumOffset(ConstantValue.Create((ushort)0), 2, EnumOverflowKind.NoOverflow, ConstantValue.Create((ushort)2)); 915EnumOffset(ConstantValue.Create((ushort)(ushort.MaxValue - 3)), 3, EnumOverflowKind.NoOverflow, ConstantValue.Create((ushort)ushort.MaxValue)); 916EnumOffset(ConstantValue.Create((ushort)(ushort.MaxValue - 3)), 4, EnumOverflowKind.OverflowReport, ConstantValue.Bad); 917EnumOffset(ConstantValue.Create((ushort)(ushort.MaxValue - 3)), 5, EnumOverflowKind.OverflowIgnore, ConstantValue.Bad); 920EnumOffset(ConstantValue.Create((int)int.MinValue), 1, EnumOverflowKind.NoOverflow, ConstantValue.Create((int)(int.MinValue + 1))); 921EnumOffset(ConstantValue.Create((int)int.MinValue), 2, EnumOverflowKind.NoOverflow, ConstantValue.Create((int)(int.MinValue + 2))); 922EnumOffset(ConstantValue.Create((int)-2), 1, EnumOverflowKind.NoOverflow, ConstantValue.Create((int)(-1))); 923EnumOffset(ConstantValue.Create((int)-2), 3, EnumOverflowKind.NoOverflow, ConstantValue.Create((int)(1))); 924EnumOffset(ConstantValue.Create((int)(int.MaxValue - 3)), 3, EnumOverflowKind.NoOverflow, ConstantValue.Create((int)int.MaxValue)); 925EnumOffset(ConstantValue.Create((int)(int.MaxValue - 3)), 4, EnumOverflowKind.OverflowReport, ConstantValue.Bad); 926EnumOffset(ConstantValue.Create((int)(int.MaxValue - 3)), 5, EnumOverflowKind.OverflowIgnore, ConstantValue.Bad); 929EnumOffset(ConstantValue.Create((uint)0), 1, EnumOverflowKind.NoOverflow, ConstantValue.Create((uint)1)); 930EnumOffset(ConstantValue.Create((uint)0), 2, EnumOverflowKind.NoOverflow, ConstantValue.Create((uint)2)); 931EnumOffset(ConstantValue.Create((uint)(uint.MaxValue - 3)), 3, EnumOverflowKind.NoOverflow, ConstantValue.Create((uint)uint.MaxValue)); 932EnumOffset(ConstantValue.Create((uint)(uint.MaxValue - 3)), 4, EnumOverflowKind.OverflowReport, ConstantValue.Bad); 933EnumOffset(ConstantValue.Create((uint)(uint.MaxValue - 3)), 5, EnumOverflowKind.OverflowIgnore, ConstantValue.Bad); 936EnumOffset(ConstantValue.Create((long)long.MinValue), 1, EnumOverflowKind.NoOverflow, ConstantValue.Create((long)(long.MinValue + 1))); 937EnumOffset(ConstantValue.Create((long)long.MinValue), 2, EnumOverflowKind.NoOverflow, ConstantValue.Create((long)(long.MinValue + 2))); 938EnumOffset(ConstantValue.Create((long)-2), 1, EnumOverflowKind.NoOverflow, ConstantValue.Create((long)(-1))); 939EnumOffset(ConstantValue.Create((long)-2), 3, EnumOverflowKind.NoOverflow, ConstantValue.Create((long)(1))); 940EnumOffset(ConstantValue.Create((long)(long.MaxValue - 3)), 3, EnumOverflowKind.NoOverflow, ConstantValue.Create((long)long.MaxValue)); 941EnumOffset(ConstantValue.Create((long)(long.MaxValue - 3)), 4, EnumOverflowKind.OverflowReport, ConstantValue.Bad); 942EnumOffset(ConstantValue.Create((long)(long.MaxValue - 3)), 5, EnumOverflowKind.OverflowIgnore, ConstantValue.Bad); 945EnumOffset(ConstantValue.Create((ulong)0), 1, EnumOverflowKind.NoOverflow, ConstantValue.Create((ulong)1)); 946EnumOffset(ConstantValue.Create((ulong)0), 2, EnumOverflowKind.NoOverflow, ConstantValue.Create((ulong)2)); 947EnumOffset(ConstantValue.Create((ulong)(ulong.MaxValue - 3)), 3, EnumOverflowKind.NoOverflow, ConstantValue.Create((ulong)ulong.MaxValue)); 948EnumOffset(ConstantValue.Create((ulong)(ulong.MaxValue - 3)), 4, EnumOverflowKind.OverflowReport, ConstantValue.Bad); 949EnumOffset(ConstantValue.Create((ulong)(ulong.MaxValue - 3)), 5, EnumOverflowKind.OverflowIgnore, ConstantValue.Bad); 952private void EnumOffset(ConstantValue constantValue, uint offset, EnumOverflowKind expectedOverflowKind, ConstantValue expectedValue) 954ConstantValue actualValue;
Compilation\SemanticModelAPITests.cs (1)
1929Assert.Equal(ConstantValue.Default(SpecialType.System_Int32), labelSymbol.SwitchCaseLabelConstant);
Compilation\SemanticModelGetDeclaredSymbolAPITests.cs (1)
724Assert.Equal(ConstantValue.Default(SpecialType.System_Int32), labelSymbol.SwitchCaseLabelConstant);
Microsoft.CodeAnalysis.ExpressionEvaluator.ExpressionCompiler (26)
EESymbolProvider.cs (2)
28public abstract void DecodeLocalConstant(ref BlobReader reader, out TTypeSymbol type, out ConstantValue value); 42ConstantValue value,
PDB\MethodDebugInfo.Native.cs (1)
659ConstantValue constantValue = PdbHelpers.GetSymConstantValue(type, rawValue);
PDB\MethodDebugInfo.Portable.cs (1)
205symbolProvider.DecodeLocalConstant(ref sigReader, out var typeSymbol, out var value);
PDB\PdbHelpers.cs (22)
78/// Translates the value of a constant returned by <see cref="ISymUnmanagedConstant.GetValue(out object)"/> to a <see cref="ConstantValue"/>. 80public static ConstantValue GetSymConstantValue(ITypeSymbolInternal type, object symValue) 89(SpecialType.System_Boolean, short shortVal) => ConstantValue.Create(shortVal != 0), 90(SpecialType.System_Byte, short shortVal) when unchecked((byte)shortVal) == shortVal => ConstantValue.Create((byte)shortVal), 91(SpecialType.System_SByte, short shortVal) when unchecked((sbyte)shortVal) == shortVal => ConstantValue.Create((sbyte)shortVal), 92(SpecialType.System_Int16, short shortVal) => ConstantValue.Create(shortVal), 93(SpecialType.System_Char, ushort ushortVal) => ConstantValue.Create((char)ushortVal), 94(SpecialType.System_UInt16, ushort ushortVal) => ConstantValue.Create(ushortVal), 95(SpecialType.System_Int32, int intVal) => ConstantValue.Create(intVal), 96(SpecialType.System_UInt32, uint uintVal) => ConstantValue.Create(uintVal), 97(SpecialType.System_Int64, long longVal) => ConstantValue.Create(longVal), 98(SpecialType.System_UInt64, ulong ulongVal) => ConstantValue.Create(ulongVal), 99(SpecialType.System_Single, float floatVal) => ConstantValue.Create(floatVal), 100(SpecialType.System_Double, double doubleVal) => ConstantValue.Create(doubleVal), 101(SpecialType.System_String, 0) => ConstantValue.Null, 102(SpecialType.System_String, null) => ConstantValue.Create(string.Empty), 103(SpecialType.System_String, string str) => ConstantValue.Create(str), 104(SpecialType.System_Object, 0) => ConstantValue.Null, 105(SpecialType.System_Decimal, decimal decimalValue) => ConstantValue.Create(decimalValue), 106(SpecialType.System_DateTime, double doubleVal) => ConstantValue.Create(DateTimeUtilities.ToDateTime(doubleVal)), 107(SpecialType.None, 0) when type.IsReferenceType => ConstantValue.Null, 108_ => ConstantValue.Bad,
Microsoft.CodeAnalysis.Test.Utilities (2)
Diagnostics\CouldHaveMoreSpecificTypeAnalyzer.cs (2)
68var constantValue = ConstantValue.Create(1);
Microsoft.CodeAnalysis.UnitTests (80)
CorLibTypesTests.cs (80)
95Assert.Throws<InvalidOperationException>(() => { ConstantValue.Create(null, ConstantValueTypeDiscriminator.Bad); }); 97var cv1 = ConstantValue.Create(1); 101var cv2 = ConstantValue.Create(2); 106var cvNull = ConstantValue.Create(null, ConstantValueTypeDiscriminator.Null); 118var cv1 = ConstantValue.Create(1); 139Assert.True(ConstantValue.Create((byte)1).IsOne); 140Assert.True(ConstantValue.Create((sbyte)1).IsOne); 141Assert.True(ConstantValue.Create(true).IsOne); 142Assert.True(ConstantValue.Create((double)1).IsOne); 143Assert.True(ConstantValue.Create((float)1).IsOne); 144Assert.True(ConstantValue.Create((decimal)1).IsOne); 145Assert.True(ConstantValue.Create((short)1).IsOne); 146Assert.True(ConstantValue.Create((ushort)1).IsOne); 147Assert.True(ConstantValue.Create((int)1).IsOne); 148Assert.True(ConstantValue.Create((uint)1).IsOne); 149Assert.True(ConstantValue.Create((long)1).IsOne); 150Assert.True(ConstantValue.Create((ulong)1).IsOne); 151Assert.True(ConstantValue.Create((char)1).IsOne); 157Assert.Equal(ConstantValue.Bad, ConstantValue.Default(ConstantValueTypeDiscriminator.Bad)); 159var cv1 = ConstantValue.Create((sbyte)-1); 162var cv2 = ConstantValue.Create(-0.12345f); 165var cv3 = ConstantValue.Create((double)-1.234); 168var cv4 = ConstantValue.Create((decimal)-12345m); 172var cv5 = ConstantValue.Create(null); 181var cv11 = ConstantValue.Create((sbyte)-1); 182var cv12 = ConstantValue.Create((sbyte)-1); 185var cv21 = ConstantValue.Create((byte)255); 186var cv22 = ConstantValue.Create((byte)255); 189var cv31 = ConstantValue.Create((short)-32768); 190var cv32 = ConstantValue.Create((short)-32768); 193var cv41 = ConstantValue.Create((ushort)65535); 194var cv42 = ConstantValue.Create((ushort)65535); 197var cv51 = ConstantValue.Create(12345); 198var cv52 = ConstantValue.Create(12345); 201var cv61 = ConstantValue.Create(uint.MinValue); 202var cv62 = ConstantValue.Create(uint.MinValue); 205var cv71 = ConstantValue.Create(long.MaxValue); 206var cv72 = ConstantValue.Create(long.MaxValue); 209var cv81 = ConstantValue.Create((ulong)123456789); 210var cv82 = ConstantValue.Create((ulong)123456789); 213var cv91 = ConstantValue.Create(1.1m); 214var cv92 = ConstantValue.Create(1.1m); 228var cv1 = ConstantValue.Create("1"); 229var cv2 = ConstantValue.Create("2"); 243var cv = ConstantValue.Create(null, ConstantValueTypeDiscriminator.Null); 246cv = ConstantValue.Create(null, ConstantValueTypeDiscriminator.String); 252cv = ConstantValue.Create(strVal); 255cv = ConstantValue.Create((sbyte)-128); 258cv = ConstantValue.Create((ulong)123456789);