7 overrides of IsReferenceType
Microsoft.CodeAnalysis.CSharp (7)
Symbols\ArrayTypeSymbol.cs (1)
221public override bool IsReferenceType
Symbols\DynamicTypeSymbol.cs (1)
38public override bool IsReferenceType
Symbols\FunctionPointers\FunctionPointerTypeSymbol.cs (1)
73public override bool IsReferenceType => false;
Symbols\FunctionTypeSymbol.cs (1)
98public override bool IsReferenceType => true;
Symbols\NamedTypeSymbol.cs (1)
388public override bool IsReferenceType
Symbols\PointerTypeSymbol.cs (1)
93public override bool IsReferenceType
Symbols\TypeParameterSymbol.cs (1)
518public sealed override bool IsReferenceType
136 references to IsReferenceType
Microsoft.CodeAnalysis.CSharp (104)
Binder\Binder.ValueChecks.cs (1)
4611if (type.IsReferenceType)
Binder\Binder_Expressions.cs (3)
1349else if (typeWithAnnotations.NullableAnnotation.IsAnnotated() && type.IsReferenceType) 2535if (!targetType.IsReferenceType && !targetType.IsNullableType() && operand.IsLiteralNull()) 9370if ((!accessType.IsReferenceType && !accessType.IsValueType) || accessType.IsPointerOrFunctionPointer() || accessType.IsRestrictedType())
Binder\Binder_Operators.cs (7)
814Debug.Assert(!right.Type.IsReferenceType); 818Debug.Assert(!left.Type.IsReferenceType); 2579if (receiver.Type.IsReferenceType) 3219if (targetType.IsReferenceType && targetTypeWithAnnotations.NullableAnnotation.IsAnnotated()) 3662if (targetType.IsReferenceType && targetTypeWithAnnotations.NullableAnnotation.IsAnnotated()) 3668else if (!targetType.IsReferenceType && !targetType.IsNullableType()) 3948if ((object)optLeftType != null && !optLeftType.IsReferenceType && !isLeftNullable)
Binder\LockBinder.cs (1)
52else if (!exprType.IsReferenceType && (exprType.IsValueType || Compilation.FeatureStrictEnabled))
Binder\Semantics\Conversions\Conversions.cs (2)
233if (!thisParameter.Type.IsReferenceType) 353if (methodGroup.IsExtensionMethodGroup && !method.Parameters[0].Type.IsReferenceType)
Binder\Semantics\Conversions\ConversionsBase.cs (8)
1172if (destination.IsReferenceType) 2484if (!source.IsReferenceType) 3089if (!source.IsValueType || !destination.IsReferenceType) 3237if (destination.IsReferenceType) 3242else if (source.Kind == SymbolKind.DynamicType && destination.IsReferenceType) 3470bool bothAreReferenceTypes = sourceArg.IsReferenceType && destinationArg.IsReferenceType; 3622if (source.IsReferenceType &&
Binder\Semantics\OverloadResolution\MethodTypeInference.cs (11)
1953if (elementSource.Type.IsReferenceType) 2183if (sourceTypeArgument.Type.IsReferenceType && typeParameter.Variance == VarianceKind.Out) 2187else if (sourceTypeArgument.Type.IsReferenceType && typeParameter.Variance == VarianceKind.In) 2227if ((sourceParam.Type.IsReferenceType || sourceParam.Type.IsFunctionPointer()) && sourceParam.RefKind == RefKind.None) 2237if ((sourceSignature.ReturnType.IsReferenceType || sourceSignature.ReturnType.IsFunctionPointer()) && sourceSignature.RefKind == RefKind.None) 2290Debug.Assert(source.Type.IsReferenceType || source.Type.IsFunctionPointer()); 2354if (elementSource.Type.IsReferenceType) 2533if (sourceTypeArgument.Type.IsReferenceType && typeParameter.Variance == VarianceKind.Out) 2537else if (sourceTypeArgument.Type.IsReferenceType && typeParameter.Variance == VarianceKind.In) 2577if ((sourceParam.Type.IsReferenceType || sourceParam.Type.IsFunctionPointer()) && sourceParam.RefKind == RefKind.None) 2587if ((sourceSignature.ReturnType.IsReferenceType || sourceSignature.ReturnType.IsFunctionPointer()) && sourceSignature.RefKind == RefKind.None)
CodeGen\EmitAddress.cs (3)
43Debug.Assert(!expression.Type.IsReferenceType); 233Debug.Assert(!expression.Type.IsReferenceType); 369if (!receiver.Type.IsReferenceType)
CodeGen\EmitExpression.cs (9)
364Debug.Assert(!expression.Type.IsReferenceType); 419var notConstrained = !receiverType.IsReferenceType && !receiverType.IsValueType; 428(receiverType.IsReferenceType && receiverType.TypeKind == TypeKind.TypeParameter) || 644if (!expression.Type.IsReferenceType) 1809callKind = receiverType.IsReferenceType && !IsRef(receiver) ? 1838if (!receiverType.IsReferenceType) 1886BoundConditionalReceiver { Type: { IsReferenceType: false, IsValueType: false } }) 2386if (rightType.IsReferenceType || (right.ConstantValueOpt != null && rightType.SpecialType != SpecialType.System_Decimal)) 3567Debug.Assert(expr.Type.IsReferenceType);
CodeGen\EmitOperators.cs (2)
439if (comparandType.IsReferenceType && !comparandType.IsVerifierReference()) 453if (comparandType.IsReferenceType && !comparandType.IsVerifierReference())
CodeGen\EmitStatement.cs (3)
218return ts.IsReferenceType; 534var complexCase = !receiverType.IsReferenceType || 611if (conditionType.IsReferenceType && !conditionType.IsVerifierReference())
CodeGen\Optimizer.cs (1)
1165if (receiverType.IsReferenceType)
Compilation\BuiltInOperators.cs (4)
884if (leftType.IsValueType || (!leftType.IsReferenceType && !rightIsNull)) 895if (rightType.IsValueType || (!rightType.IsReferenceType && !leftIsNull)) 904var leftIsReferenceType = ((object)leftType != null) && leftType.IsReferenceType; 910var rightIsReferenceType = ((object)rightType != null) && rightType.IsReferenceType;
FlowAnalysis\DefiniteAssignment.cs (1)
874if ((object)type != null && type.IsReferenceType &&
FlowAnalysis\NullableWalker.cs (4)
2480if (targetType.Type.IsReferenceType || 2565if (fieldOrPropertyType.Type.IsReferenceType || 6679return (type.Kind == SymbolKind.TypeParameter && !type.IsReferenceType) || type.IsNullableTypeOrTypeParameter(); 10757Debug.Assert(node.Type.IsReferenceType);
Lowering\ClosureConversion\ClosureConversion.cs (1)
689Debug.Assert(capturedFrame.Type.IsReferenceType); // Make sure we're not accidentally capturing a struct by value
Lowering\ClosureConversion\ExpressionLambdaRewriter.cs (2)
683receiver = requiresInstanceReceiver ? nullObject : receiver.Type.IsReferenceType ? receiver : _bound.Convert(_objectType, receiver); 1027!node.ReceiverOpt.Type.IsReferenceType)
Lowering\DiagnosticsPass_Warnings.cs (1)
89if (IsNonAgileFieldAccess(fieldAccess, _compilation) && !fieldSymbol.Type.IsReferenceType)
Lowering\LocalRewriter\LocalRewriter.DecisionDagRewriter.cs (1)
174receiver.Type?.IsReferenceType == false &&
Lowering\LocalRewriter\LocalRewriter.PatternLocalRewriter.cs (1)
469typeDecision.Type.IsReferenceType &&
Lowering\LocalRewriter\LocalRewriter_Call.cs (2)
464!rewrittenReceiver.Type.IsReferenceType && 706if (!receiverType.IsReferenceType)
Lowering\LocalRewriter\LocalRewriter_CompoundAssignmentOperator.cs (3)
466else if (!receiver.Type.IsReferenceType) 471Debug.Assert(receiver.Type.IsReferenceType); 934type.IsReferenceType ||
Lowering\LocalRewriter\LocalRewriter_ConditionalAccess.cs (1)
48if (loweredReceiver.IsDefaultValue() && receiverType.IsReferenceType)
Lowering\LocalRewriter\LocalRewriter_ForEachStatement.cs (1)
451if (!receiver.Type.IsReferenceType && method.ContainingType.IsInterface)
Lowering\LocalRewriter\LocalRewriter_IndexerAccess.cs (2)
272receiver.Type.IsReferenceType ? RefKind.None : RefKind.Ref); 580receiver.Type.IsReferenceType ? RefKind.None : RefKind.Ref);
Lowering\LocalRewriter\LocalRewriter_LocalDeclaration.cs (1)
36if (!localSymbol.Type.IsReferenceType && localSymbol.ConstantValue == null)
Lowering\LocalRewriter\LocalRewriter_NullCoalescingOperator.cs (2)
61var isUnconstrainedTypeParameter = rewrittenLeft.Type is { IsReferenceType: false, IsValueType: false }; 93if (rewrittenLeft.Type.IsReferenceType &&
Lowering\LocalRewriter\LocalRewriter_StringConcat.cs (1)
447bool callWithoutCopy = expr.Type.IsReferenceType ||
Lowering\SpillSequenceSpiller.cs (6)
381if (refKind != RefKind.None || expression.Type.IsReferenceType) 492&& !receiverRefLocal.Type.IsReferenceType 963Debug.Assert(refKind == RefKind.None || !receiver.Type.IsReferenceType); 973Debug.Assert(!receiverType.IsReferenceType); 1003if (!receiver.Type.IsReferenceType && LocalRewriter.CanBePassedByReference(receiver)) 1188if (receiver.Type.IsReferenceType || receiver.Type.IsValueType || receiverRefKind == RefKind.None)
Lowering\StateMachineRewriter\MethodToStateMachineRewriter.cs (2)
140thisParameter.Type.IsReferenceType && 439if (type.IsReferenceType || type.TypeKind == TypeKind.TypeParameter) return true; // type parameter or reference type
Lowering\StateMachineRewriter\StateMachineRewriter.cs (1)
430if (method.IsStatic || method.ThisParameter.Type.IsReferenceType)
Lowering\SyntheticBoundNodeFactory.cs (2)
846Debug.Assert(left.Type.IsReferenceType); 1493return typeSymbol.IsReferenceType ? Null(typeSymbol, syntax) : Default(typeSymbol, syntax);
Symbols\AliasSymbol.cs (1)
415annotatedNamespaceOrType.TypeWithAnnotations.Type?.IsReferenceType is true)
Symbols\ConstantValueUtils.cs (1)
112typeSymbol.IsReferenceType &&
Symbols\ConstraintsHelper.cs (2)
897if (!typeArgument.Type.IsReferenceType) 1086if (typeArgument.Type.IsReferenceType)
Symbols\PublicModel\TypeSymbol.cs (1)
123return UnderlyingTypeSymbol.IsReferenceType;
Symbols\Source\SourceAssemblySymbol.cs (1)
2736if (type.IsReferenceType) return "null";
Symbols\Source\SourceComplexParameterSymbol.cs (1)
973if (this.Type.IsReferenceType)
Symbols\TypeParameterSymbol.cs (1)
405if (!constraint.IsReferenceType)
Symbols\TypeSymbol.cs (1)
2457bool ITypeSymbolInternal.IsReferenceType => this.IsReferenceType;
Symbols\TypeSymbolExtensions.cs (5)
32return type.IsReferenceType || type.IsPointerOrFunctionPointer() || type.IsNullableType(); 45return typeSymbol.IsReferenceType || typeSymbol.IsEnumType() || typeSymbol.SpecialType.CanBeConst() || typeSymbol.IsNativeIntegerType; 571if (type.IsReferenceType) 1414return type.IsReferenceType; 1578return type.IsReferenceType && type.TypeKind != TypeKind.TypeParameter;
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (28)
Semantics\NullableReferenceTypesTests.cs (24)
11495Assert.False(m1.Parameters[0].Type.IsReferenceType); 11500Assert.False(m2.ReturnType.IsReferenceType); 11758Assert.False(m1.Parameters[0].Type.StrippedType().IsReferenceType); 12089Assert.True(m1.Parameters[0].Type.IsReferenceType); 13888Assert.True(m1.Parameters[0].Type.IsReferenceType); 13894Assert.True(m2.ReturnType.IsReferenceType); 135191Assert.True(c2Goo.Parameters[0].Type.IsReferenceType); 135219Assert.True(((ArrayTypeSymbol)c2Goo.Parameters[0].Type).ElementType.IsReferenceType); 135249Assert.True(tuple.TupleElements[0].Type.IsReferenceType); 135251Assert.True(tuple.TupleElements[1].Type.IsReferenceType); 135279Assert.True(c2Goo.ReturnType.IsReferenceType); 135307Assert.True(((ArrayTypeSymbol)c2Goo.ReturnType).ElementType.IsReferenceType); 135337Assert.True(tuple.TupleElements[0].Type.IsReferenceType); 135339Assert.True(tuple.TupleElements[1].Type.IsReferenceType); 135362Assert.True(dGoo.Parameters[0].Type.IsReferenceType); 135385Assert.True(((ArrayTypeSymbol)dGoo.Parameters[0].Type).ElementType.IsReferenceType); 135410Assert.True(tuple.TupleElements[0].Type.IsReferenceType); 135412Assert.True(tuple.TupleElements[1].Type.IsReferenceType); 135435Assert.True(dGoo.ReturnType.IsReferenceType); 135458Assert.True(((ArrayTypeSymbol)dGoo.ReturnType).ElementType.IsReferenceType); 135483Assert.True(tuple.TupleElements[0].Type.IsReferenceType); 135485Assert.True(tuple.TupleElements[1].Type.IsReferenceType); 135510Assert.True(dGoo.ReturnType.IsReferenceType); 135516Assert.True(tuple.TupleElements[0].Type.IsReferenceType);
Semantics\OperatorTests.cs (4)
8168leftType.IsReferenceType && rightType.IsReferenceType && 8346(!leftType.IsReferenceType || !rightType.IsReferenceType ||
Microsoft.CodeAnalysis.CSharp.Symbol.UnitTests (3)
Symbols\Source\MethodTests.cs (3)
368Assert.True(refP.IsReferenceType); 376Assert.False(outP.IsReferenceType); 407Assert.False(m.ReturnType.IsReferenceType);
Microsoft.CodeAnalysis.CSharp.Test.Utilities (1)
UsesIsNullableVisitor.cs (1)
158return (type.NullableAnnotation != NullableAnnotation.Oblivious && typeSymbol.IsReferenceType && !typeSymbol.IsErrorType()) ||