11 overrides of AllowsRefLikeType
Microsoft.CodeAnalysis.CSharp (11)
Symbols\AnonymousTypes\SynthesizedSymbols\AnonymousType.TypeParameterSymbol.cs (1)
96
public override bool
AllowsRefLikeType
=> _allowsRefLikeType;
Symbols\ErrorTypeSymbol.ErrorTypeParameterSymbol.cs (1)
94
public override bool
AllowsRefLikeType
Symbols\Metadata\PE\PETypeParameterSymbol.cs (1)
571
public override bool
AllowsRefLikeType
Symbols\Source\CrefTypeParameterSymbol.cs (1)
130
public override bool
AllowsRefLikeType
Symbols\Source\IndexedTypeParameterSymbol.cs (1)
145
public override bool
AllowsRefLikeType
Symbols\Source\SourceTypeParameterSymbol.cs (2)
508
public override bool
AllowsRefLikeType
635
public abstract override bool
AllowsRefLikeType
{ get; }
Symbols\Synthesized\ReadOnlyListType\SynthesizedReadOnlyListTypeParameterSymbol.cs (1)
37
public override bool
AllowsRefLikeType
=> false; // The list is a class type and cannot store ref structs as elements.
Symbols\Synthesized\SynthesizedInlineArrayTypeSymbol.cs (1)
237
public override bool
AllowsRefLikeType
=> false; // Span types do not support ref like type parameters for now
Symbols\SynthesizedSimpleMethodTypeParameterSymbol.cs (1)
71
public override bool
AllowsRefLikeType
Symbols\Wrapped\WrappedTypeParameterSymbol.cs (1)
120
public override bool
AllowsRefLikeType
104 references to AllowsRefLikeType
Microsoft.CodeAnalysis.CSharp (40)
Binder\Binder_Expressions.cs (1)
9115
if (receiverOpt is { Type: TypeParameterSymbol {
AllowsRefLikeType
: true } } &&
Binder\Binder_Operators.cs (4)
4947
if (targetType is TypeParameterSymbol {
AllowsRefLikeType
: true })
4954
else if (operandType is not TypeParameterSymbol {
AllowsRefLikeType
: true })
4960
Debug.Assert(operandType is TypeParameterSymbol {
AllowsRefLikeType
: false });
4968
Debug.Assert(targetType is TypeParameterSymbol {
AllowsRefLikeType
: false });
Binder\ForEachLoopBinder.cs (2)
1274
if (enumeratorType is TypeParameterSymbol {
AllowsRefLikeType
: true })
1848
needSupportForRefStructInterfaces = typeParameter.
AllowsRefLikeType
;
Binder\Semantics\Conversions\ConversionsBase.cs (11)
2861
if (destination is TypeParameterSymbol {
AllowsRefLikeType
: false } &&
2862
!source.
AllowsRefLikeType
&&
2881
if (source.
AllowsRefLikeType
)
2904
if (destination is TypeParameterSymbol {
AllowsRefLikeType
: false } &&
3023
return typeParameter.
AllowsRefLikeType
&& HasVarianceCompatibleInterfaceInEffectiveInterfaceSet(typeParameter, targetInterfaceType, ref useSiteInfo);
3258
if (source.
AllowsRefLikeType
)
3281
if (destination is TypeParameterSymbol {
AllowsRefLikeType
: false } d &&
3536
if (s?.
AllowsRefLikeType
== true || t?.
AllowsRefLikeType
== true)
3588
if (s?.
AllowsRefLikeType
== true || t?.
AllowsRefLikeType
== true)
Binder\Semantics\Operators\BinaryOperatorOverloadResolution.cs (3)
734
if ((left.Type is TypeParameterSymbol {
AllowsRefLikeType
: true } && right.IsLiteralNull()) ||
735
(right.Type is TypeParameterSymbol {
AllowsRefLikeType
: true } && left.IsLiteralNull()))
792
return (operand.Type is TypeParameterSymbol {
AllowsRefLikeType
: true }) ? Conversion.Boxing : Conversions.ClassifyConversionFromExpression(operand, objectType, isChecked: isChecked, ref useSiteInfo);
CodeGen\EmitOperators.cs (1)
375
if (comparand is BoundConversion { Type.SpecialType: SpecialType.System_Object, ConversionKind: ConversionKind.Boxing, Operand.Type: TypeParameterSymbol {
AllowsRefLikeType
: true } } &&
Emitter\EditAndContinue\CSharpSymbolMatcher.cs (2)
740
Debug.Assert(type.
AllowsRefLikeType
== other.
AllowsRefLikeType
);
Emitter\Model\TypeParameterSymbolAdapter.cs (1)
309
return AdaptedTypeParameterSymbol.
AllowsRefLikeType
;
Emitter\NoPia\EmbeddedTypeParameter.cs (1)
52
return UnderlyingTypeParameter.AdaptedTypeParameterSymbol.
AllowsRefLikeType
;
Lowering\Instrumentation\LocalStateTracingInstrumenter.cs (1)
239
_ when variableType is TypeParameterSymbol {
AllowsRefLikeType
: true }
Lowering\SyntheticBoundNodeFactory.cs (1)
1498
arg.Type is TypeParameterSymbol {
AllowsRefLikeType
: true } && type.IsObjectType())
Symbols\AnonymousTypes\SynthesizedSymbols\AnonymousType.DelegateTemplateSymbol.cs (1)
181
allowsRefLikeType: typeParametersToSubstitute[i].
AllowsRefLikeType
));
Symbols\ConstraintsHelper.cs (2)
97
if (typeParameter.
AllowsRefLikeType
)
967
if (typeParameter.
AllowsRefLikeType
)
Symbols\MemberSignatureComparer.cs (2)
664
(typeParameter1.
AllowsRefLikeType
!= typeParameter2.
AllowsRefLikeType
) ||
Symbols\PublicModel\TypeParameterSymbol.cs (1)
91
bool ITypeParameterSymbol.AllowsRefLikeType => _underlying.
AllowsRefLikeType
;
Symbols\Source\SourceNamedTypeSymbol_Extension.cs (3)
123
if (typeParameter.
AllowsRefLikeType
)
463
typeParameter.HasNotNullConstraint || typeParameter.
AllowsRefLikeType
;
686
if (typeParam.
AllowsRefLikeType
)
Symbols\Source\SourceTypeParameterSymbol.cs (1)
939
return ((object)typeParameter != null) && typeParameter.
AllowsRefLikeType
;
Symbols\TypeSymbolExtensions.cs (1)
547
return type is { IsRefLikeType: true } or TypeParameterSymbol {
AllowsRefLikeType
: true };
Symbols\Wrapped\WrappedTypeParameterSymbol.cs (1)
124
return _underlyingTypeParameter.
AllowsRefLikeType
;
Microsoft.CodeAnalysis.CSharp.Emit3.UnitTests (64)
RefStructInterfacesTests.cs (64)
4382
Assert.True(t.
AllowsRefLikeType
);
4435
Assert.True(t.
AllowsRefLikeType
);
4488
Assert.True(t.
AllowsRefLikeType
);
4496
Assert.True(dt.
AllowsRefLikeType
);
4522
Assert.True(ct.
AllowsRefLikeType
);
4551
Assert.True(t.
AllowsRefLikeType
);
4573
Assert.True(t.
AllowsRefLikeType
);
4605
Assert.True(t.
AllowsRefLikeType
);
4631
Assert.True(t.
AllowsRefLikeType
);
4663
Assert.True(t.
AllowsRefLikeType
);
4698
Assert.True(t.
AllowsRefLikeType
);
4735
Assert.True(t.
AllowsRefLikeType
);
4761
Assert.True(t.
AllowsRefLikeType
);
4790
Assert.True(t.
AllowsRefLikeType
);
4827
Assert.True(t.
AllowsRefLikeType
);
4856
Assert.True(t.
AllowsRefLikeType
);
4878
Assert.True(t.
AllowsRefLikeType
);
4907
Assert.True(t.
AllowsRefLikeType
);
4929
Assert.True(t.
AllowsRefLikeType
);
4960
Assert.True(t.
AllowsRefLikeType
);
4987
Assert.True(t.
AllowsRefLikeType
);
5018
Assert.True(t.
AllowsRefLikeType
);
5047
Assert.True(t.
AllowsRefLikeType
);
5072
Assert.True(t.
AllowsRefLikeType
);
5099
Assert.True(t.
AllowsRefLikeType
);
5123
Assert.True(t.
AllowsRefLikeType
);
5145
Assert.True(t.
AllowsRefLikeType
);
5166
Assert.True(t.
AllowsRefLikeType
);
5187
Assert.True(t.
AllowsRefLikeType
);
5212
Assert.False(t.
AllowsRefLikeType
);
5237
Assert.True(t.
AllowsRefLikeType
);
5262
Assert.True(t.
AllowsRefLikeType
);
5291
Assert.False(t.
AllowsRefLikeType
);
5320
Assert.True(t.
AllowsRefLikeType
);
5349
Assert.False(t.
AllowsRefLikeType
);
5378
Assert.True(t.
AllowsRefLikeType
);
5422
Assert.True(t1.
AllowsRefLikeType
);
5461
Assert.True(t1.
AllowsRefLikeType
);
5516
Assert.True(t1.
AllowsRefLikeType
);
5559
Assert.True(t1.
AllowsRefLikeType
);
5594
Assert.True(t1.
AllowsRefLikeType
);
5645
Assert.True(t1.
AllowsRefLikeType
);
5769
Assert.False(t.
AllowsRefLikeType
);
5797
Assert.True(t.
AllowsRefLikeType
);
5804
Assert.True(u.
AllowsRefLikeType
);
5830
Assert.True(t.
AllowsRefLikeType
);
5837
Assert.False(u.
AllowsRefLikeType
);
22483
Assert.True(tp.
AllowsRefLikeType
);
22539
Assert.True(tp.
AllowsRefLikeType
);
22686
Assert.True(tp.
AllowsRefLikeType
);
22735
Assert.False(tp.
AllowsRefLikeType
);
22852
Assert.False(m.ContainingType.TypeParameters.Single().
AllowsRefLikeType
);
22876
Assert.Equal([true, false], m.ContainingType.TypeParameters.Select(t => t.
AllowsRefLikeType
));
22934
Assert.False(m.ContainingType.TypeParameters.Single().
AllowsRefLikeType
);
22965
Assert.True(m.ContainingType.TypeParameters.Single().
AllowsRefLikeType
);
22996
Assert.False(m.ContainingType.TypeParameters.Single().
AllowsRefLikeType
);
23027
Assert.False(m.ContainingType.TypeParameters.Single().
AllowsRefLikeType
);
23059
Assert.False(m.ContainingType.TypeParameters.Single().
AllowsRefLikeType
);
23090
Assert.False(m.ContainingType.TypeParameters.Single().
AllowsRefLikeType
);
23121
Assert.False(m.ContainingType.TypeParameters.Single().
AllowsRefLikeType
);
23175
Assert.False(m.ContainingType.TypeParameters.Single().
AllowsRefLikeType
);
23206
Assert.True(m.ContainingType.TypeParameters.Single().
AllowsRefLikeType
);
23230
Assert.Equal([true, true], m.ContainingType.TypeParameters.Select(t => t.
AllowsRefLikeType
));
28946
Assert.True(t1.
AllowsRefLikeType
);