7 overrides of IsValueType
Microsoft.CodeAnalysis.CSharp (7)
Symbols\ArrayTypeSymbol.cs (1)
231public override bool IsValueType
Symbols\DynamicTypeSymbol.cs (1)
102public override bool IsValueType
Symbols\FunctionPointers\FunctionPointerTypeSymbol.cs (1)
75public override bool IsValueType => true;
Symbols\FunctionTypeSymbol.cs (1)
100public override bool IsValueType => false;
Symbols\NamedTypeSymbol.cs (1)
408public override bool IsValueType
Symbols\PointerTypeSymbol.cs (1)
102public override bool IsValueType
Symbols\TypeParameterSymbol.cs (1)
582public sealed override bool IsValueType
146 references to IsValueType
Microsoft.CodeAnalysis.CSharp (128)
Binder\Binder.ValueChecks.cs (5)
913Debug.Assert(!checkingReceiver || expr.Type.IsValueType || expr.Type.IsTypeParameter()); 1073var isValueType = ((BoundThisReference)expr).Type.IsValueType; 1873&& receiver?.Type?.IsValueType == true; 3798Debug.Assert(!checkingReceiver || expr.Type.IsValueType || expr.Type.IsTypeParameter()); 4795Debug.Assert(!checkingReceiver || expr.Type.IsValueType || expr.Type.IsTypeParameter());
Binder\Binder_Expressions.cs (7)
1411|| (typeWithAnnotations.NullableAnnotation.IsAnnotated() && !type.IsValueType) 5935if (isRhsNestedInitializer && fieldSymbol.IsReadOnly && fieldSymbol.Type.IsValueType) 6058if (propertySymbol.Type.IsValueType) 8893hasError = (object)receiverType == null || !receiverType.IsValueType; 11364if ((!accessType.IsReferenceType && !accessType.IsValueType) || accessType.IsPointerOrFunctionPointer() || accessType.IsRestrictedType()) 11381if (accessType.IsValueType && !accessType.IsNullableType() && !accessType.IsVoidType()) 11534if (receiverType.IsValueType && !receiverType.IsNullableType())
Binder\Binder_Invocation.cs (1)
1842receiver.Type.IsValueType &&
Binder\Binder_Operators.cs (7)
437if (leftType.IsValueType) 3397if (operandType.IsValueType) 3734!((extensionParameter.Type.IsValueType && extensionParameter.RefKind == RefKind.Ref) || 4937if (operandType.IsValueType && targetType.IsClassType() && targetType.SpecialType != SpecialType.System_Enum || 4938targetType.IsValueType && operandType.IsClassType() && operandType.SpecialType != SpecialType.System_Enum) 5456if (!optLeftType.IsValueType) 5616if (leftType.IsValueType && !leftType.IsNullableType())
Binder\Binder_Statements.cs (1)
2413if (targetType.IsValueType)
Binder\Binder_WithExpression.cs (1)
30if (receiverType.IsValueType && !receiverType.IsPointerOrFunctionPointer())
Binder\LockBinder.cs (1)
52else if (!exprType.IsReferenceType && (exprType.IsValueType || Compilation.FeatureStrictEnabled))
Binder\Semantics\Conversions\ConversionsBase.cs (4)
2255if (!unwrappedSource.IsValueType) 3316if (!source.IsValueType || !destination.IsReferenceType) 3834if (destination.IsValueType && !destination.IsNullableType()) 3843destination.IsValueType &&
CodeGen\CodeGenerator_HasHome.cs (2)
54if (addressKind == AddressKind.ReadOnly && !expression.Type.IsValueType && peVerifyCompatEnabled) 229if (receiver?.Type.IsValueType == true)
CodeGen\EmitAddress.cs (6)
42Debug.Assert(!expression.Type.IsValueType || expression.Type.IsNullableType()); 65Debug.Assert(expression.Type.IsValueType || IsAnyReadOnly(addressKind), "'this' is readonly in classes"); 67if (expression.Type.IsValueType) 237Debug.Assert(!expression.Type.IsValueType); 430return !arrayAccess.Type.IsValueType; 530Debug.Assert(receiverType.TypeKind == TypeKind.TypeParameter || receiverType.IsValueType);
CodeGen\EmitExpression.cs (12)
380Debug.Assert(!expression.Type.IsValueType); 411Debug.Assert(!receiverType.IsValueType || 434var notConstrained = !receiverType.IsReferenceType && !receiverType.IsValueType; 654Debug.Assert(!expression.Type.IsValueType); 823if (thisType.IsValueType) 1182if (fieldType.IsValueType && (object)fieldType == (object)receiver.Type) 1238if (receiver == null || !receiver.Type.IsValueType) 2052if (callKind == CallKind.ConstrainedCallVirt && tempOpt is null && !receiverType.IsValueType && 2120return !receiverType.IsValueType; 2133BoundConditionalReceiver { Type: { IsReferenceType: false, IsValueType: false } }) 2686if (left.Kind == BoundKind.ArrayAccess && left.Type.TypeKind == TypeKind.TypeParameter && !left.Type.IsValueType) 3228Debug.Assert(thisRef.Type.IsValueType);
CodeGen\Optimizer.cs (3)
1046Debug.Assert(lhs.Type.IsValueType, "'this' is assignable only in structs"); 1366if (receiver.Type.IsValueType && ( 2203!arrayAccess.Type.IsValueType)
Compilation\BuiltInOperators.cs (2)
880if (leftType.IsValueType || (!leftType.IsReferenceType && !rightIsNull)) 891if (rightType.IsValueType || (!rightType.IsReferenceType && !leftIsNull))
Errors\LazyMissingNonNullTypesContextDiagnosticInfo.cs (1)
84=> type is null || !(type.IsValueType || type.IsErrorType());
FlowAnalysis\NullableWalker.cs (9)
771if (symbolType.Type.IsValueType || symbolType.Type.IsErrorType()) 2369type.Type.IsValueType) 4453if (!initializer.Type.IsValueType && GetState(ref State, slot).MayBeNull()) 5009Debug.Assert(!node.Expression.Type!.IsValueType); 5044Debug.Assert(expressionType.IsValueType); 5081else if (!operatorKind.IsDynamic() && !resultType.IsValueType) 9591Debug.Assert(targetType.IsValueType || targetType.IsErrorType()); 12252if (node.Type.IsValueType || node.HasErrors || awaitableInfo.GetResult is null) 12641bool isValueType = type.IsValueType;
Lowering\ClosureConversion\ClosureConversion.cs (1)
722if (!framePointer.Type.IsValueType)
Lowering\LocalRewriter\LocalRewriter.cs (3)
1061return !eventAccess.ReceiverOpt.Type.IsValueType || CanBePassedByReference(eventAccess.ReceiverOpt); 1072return !fieldAccess.ReceiverOpt.Type.IsValueType || CanBePassedByReference(fieldAccess.ReceiverOpt); 1117return expr is BoundConversion { Conversion: { IsInterpolatedStringHandler: true }, Type: { IsValueType: true } };
Lowering\LocalRewriter\LocalRewriter.PatternLocalRewriter.cs (1)
363Debug.Assert(input.Type.IsValueType);
Lowering\LocalRewriter\LocalRewriter_AsOperator.cs (1)
45Debug.Assert(!rewrittenType.IsValueType || rewrittenType.IsNullableType());
Lowering\LocalRewriter\LocalRewriter_BinaryOperator.cs (1)
2098!exprType.IsValueType ||
Lowering\LocalRewriter\LocalRewriter_Call.cs (2)
706refKind = rewrittenReceiver.Type.IsValueType || rewrittenReceiver.Type.Kind == SymbolKind.TypeParameter ? RefKind.Ref : RefKind.None; 803!receiverTemp.Type.IsValueType :
Lowering\LocalRewriter\LocalRewriter_CollectionExpression.cs (1)
200if (getEnumeratorMethod?.ReturnType.IsValueType == true)
Lowering\LocalRewriter\LocalRewriter_CompoundAssignmentOperator.cs (3)
312var variableRepresentsLocation = rewrittenReceiver.Type.IsValueType || rewrittenReceiver.Type.Kind == SymbolKind.TypeParameter; 315isKnownToReferToTempIfReferenceType = !variableRepresentsLocation || rewrittenReceiver.Type.IsValueType || 333!receiverTemp.Type.IsValueType :
Lowering\LocalRewriter\LocalRewriter_Conversion.cs (2)
903userDefinedConversionRewrittenType.IsValueType) 1353parameterType.IsValueType)
Lowering\LocalRewriter\LocalRewriter_FixedStatement.cs (1)
332bool needNullCheck = !initializerType.IsValueType || initializerType.IsNullableType();
Lowering\LocalRewriter\LocalRewriter_ForEachStatement.cs (1)
390if (enumeratorType.IsValueType)
Lowering\LocalRewriter\LocalRewriter_NullCoalescingOperator.cs (2)
59var isUnconstrainedTypeParameter = rewrittenLeft.Type is { IsReferenceType: false, IsValueType: false }; 243Debug.Assert(rewrittenLeftType.IsNullableType() || !rewrittenLeftType.IsValueType);
Lowering\LocalRewriter\LocalRewriter_ObjectCreationExpression.cs (1)
177if (type.IsValueType)
Lowering\LocalRewriter\LocalRewriter_StringConcat.cs (2)
620if (expr.Type.IsValueType && !expr.Type.IsTypeParameter()) 665if (expr.Type.IsValueType)
Lowering\LocalRewriter\LocalRewriter_UnaryOperator.cs (1)
479if (operandType.IsValueType)
Lowering\LocalRewriter\LocalRewriter_UsingStatement.cs (1)
385else if (local.Type.IsValueType)
Lowering\LocalRewriter\LoweredDynamicOperationFactory.cs (1)
546if (!loweredReceiver.Type.IsValueType)
Lowering\SpillSequenceSpiller.cs (2)
564&& !receiverRefLocal.Type.IsValueType 1287if (receiver.Type.IsReferenceType || receiver.Type.IsValueType || receiverRefKind == RefKind.None)
Lowering\SyntheticBoundNodeFactory.cs (1)
1770!exprType.IsValueType ||
Symbols\ConstraintsHelper.cs (5)
474Debug.Assert(!deducedBase.IsValueType || typeParameter.HasReferenceTypeConstraint); 475diagnosticsBuilder.Add(GenerateConflictingConstraintsError(typeParameter, deducedBase, classConflict: deducedBase.IsValueType)); 1235if (type.IsValueType) 1274if (type is null || type.IsValueType) 1368if (typeArgument.Type.IsValueType)
Symbols\Extensions\SynthesizedExtensionMarker.cs (1)
100else if (parameterRefKind == RefKind.Ref && !parameterType.IsValueType)
Symbols\NamedTypeSymbol.cs (1)
363if ((thisParam.RefKind == RefKind.Ref && !thisParam.Type.IsValueType) ||
Symbols\NullableAnnotationExtensions.cs (1)
137NullableAnnotation.Oblivious when type?.IsValueType == true => CodeAnalysis.NullableAnnotation.NotAnnotated,
Symbols\PlaceholderTypeArgumentSymbol.cs (1)
14/// <see cref="TypeSymbol.IsValueType"/> with minimal binding.
Symbols\PublicModel\TypeSymbol.cs (2)
75!(UnderlyingTypeSymbol.IsValueType && !UnderlyingTypeSymbol.IsNullableType())) 136return UnderlyingTypeSymbol.IsValueType;
Symbols\Source\SourceNamedTypeSymbol_Bases.cs (1)
351static (type, arg, flag) => !type.Type.IsValueType && !type.NullableAnnotation.IsOblivious(),
Symbols\Source\SourceNamedTypeSymbol_Extension.cs (1)
438if (!type.Type.IsValueType)
Symbols\Source\SourceOrdinaryMethodSymbol.cs (1)
220else if (parameter0RefKind == RefKind.Ref && !parameter0Type.Type.IsValueType)
Symbols\Source\SourceUserDefinedOperatorSymbolBase.cs (1)
418case { IsValueType: true }:
Symbols\Source\TypeParameterConstraintClause.cs (1)
183else if (type.IsValueType)
Symbols\Synthesized\Records\SynthesizedRecordPrintMembers.cs (1)
209if (value.Type.IsValueType)
Symbols\TypeParameterSymbol.cs (1)
511if (constraintType.Type.IsValueType)
Symbols\TypeSymbol.cs (1)
2525bool ITypeSymbolInternal.IsValueType => this.IsValueType;
Symbols\TypeSymbolExtensions.cs (5)
47return !type.IsValueType || type.IsNullableTypeOrTypeParameter(); 98if (!typeArgument.IsValueType) 147return type is { IsValueType: true } 641if (type.IsValueType) 1679return type.IsValueType && type.TypeKind != TypeKind.TypeParameter;
Symbols\TypeWithAnnotations.cs (13)
110if (NullableAnnotation.IsAnnotated() || (Type.IsValueType && Type.IsNullableType())) 120if (NullableAnnotation.IsNotAnnotated() || (Type.IsValueType && !Type.IsNullableType())) 202if (!typeSymbol.IsValueType && !typeSymbol.IsErrorType()) 309(!HasType || (!IsNullableType() && !Type.IsValueType))) 315(!HasType || (!Type.IsValueType && !Type.IsTypeParameterDisallowingAnnotationInCSharp8()))) 378bool isValueType = type.IsValueType && !type.IsNullableType(); 596typeWithAnnotationsPredicate: (t, a, b) => t.NullableAnnotation != NullableAnnotation.Oblivious && !t.Type.IsErrorType() && !t.Type.IsValueType, 617return type.IsValueType; 635if (annotation.IsOblivious() || type.IsValueType) 727if (NullableAnnotation.IsNotAnnotated() || (typeSymbol.IsValueType && !typeSymbol.IsNullableType())) 743if (!typeSymbol.IsValueType && !typeSymbol.IsNullableType()) 1084TryForceResolve(asValueType: _underlying.Type.IsValueType); 1145if (!_underlying.Type.IsValueType)
Symbols\TypeWithState.cs (1)
93(Type?.IsValueType == true ? NullableAnnotation.NotAnnotated : NullableAnnotation.Annotated) :
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (14)
Semantics\NullableReferenceTypesTests.cs (5)
10354Assert.True(typeArg.Type.IsValueType); 10359Assert.True(typeArg.Type.IsValueType); 11456Assert.True(m1.Parameters[0].Type.IsValueType); 11734Assert.True(m1.Parameters[0].Type.StrippedType().IsValueType); 11769Assert.False(m1.Parameters[0].Type.StrippedType().IsValueType);
Semantics\OperatorTests.cs (9)
7676if (type.IsValueType && !type.IsPointerType()) 8294if (leftType.IsValueType && !leftType.IsPointerType()) 8296if (rightType.IsValueType && !rightType.IsPointerType()) 8311else if (rightType.IsValueType && !rightType.IsPointerType()) 8344(!leftType.IsValueType || !rightType.IsValueType || 8472if (leftType.IsValueType && !leftType.IsPointerType()) 8474if (rightType.IsValueType && !rightType.IsPointerType()) 8498else if (rightType.IsValueType && !rightType.IsPointerType())
Microsoft.CodeAnalysis.CSharp.Symbol.UnitTests (4)
Symbols\Metadata\MetadataTypeTests.cs (1)
324Assert.True(type2.ElementType.IsValueType);
Symbols\Source\MethodTests.cs (3)
370Assert.False(refP.IsValueType); 378Assert.True(outP.IsValueType); 409Assert.True(m.ReturnType.IsValueType);