17 overrides of ExtensionParameter
Microsoft.CodeAnalysis.CSharp (16)
Symbols\AnonymousTypes\PublicSymbols\AnonymousManager.TypeOrDelegatePublicSymbol.cs (1)
50
internal sealed override ParameterSymbol?
ExtensionParameter
=> null;
Symbols\AnonymousTypes\SynthesizedSymbols\AnonymousType.TypeOrDelegateTemplateSymbol.cs (1)
128
internal sealed override ParameterSymbol?
ExtensionParameter
=> null;
Symbols\ErrorTypeSymbol.cs (1)
109
internal sealed override ParameterSymbol?
ExtensionParameter
=> null;
Symbols\Metadata\PE\PENamedTypeSymbol.cs (1)
408
internal sealed override ParameterSymbol?
ExtensionParameter
Symbols\NativeIntegerTypeSymbol.cs (1)
188
internal sealed override ParameterSymbol?
ExtensionParameter
=> null;
Symbols\Retargeting\RetargetingNamedTypeSymbol.cs (1)
96
internal sealed override ParameterSymbol
ExtensionParameter
Symbols\Source\ImplicitNamedTypeSymbol.cs (1)
178
internal sealed override ParameterSymbol
ExtensionParameter
=> null;
Symbols\Source\SourceNamedTypeSymbol_Extension.cs (1)
1011
internal sealed override ParameterSymbol?
ExtensionParameter
Symbols\SubstitutedNamedTypeSymbol.cs (1)
496
internal sealed override ParameterSymbol?
ExtensionParameter
Symbols\Synthesized\ReadOnlyListType\SynthesizedReadOnlyListEnumeratorTypeSymbol.cs (1)
181
internal sealed override ParameterSymbol?
ExtensionParameter
=> null;
Symbols\Synthesized\ReadOnlyListType\SynthesizedReadOnlyListTypeSymbol.cs (1)
858
internal sealed override ParameterSymbol?
ExtensionParameter
=> null;
Symbols\Synthesized\SynthesizedContainer.cs (1)
51
internal sealed override ParameterSymbol?
ExtensionParameter
=> null;
Symbols\Synthesized\SynthesizedEmbeddedAttributeSymbol.cs (1)
119
internal sealed override ParameterSymbol?
ExtensionParameter
=> null;
Symbols\Synthesized\SynthesizedHotReloadExceptionSymbol.cs (1)
113
internal sealed override ParameterSymbol?
ExtensionParameter
=> null;
Symbols\Synthesized\SynthesizedInlineArrayTypeSymbol.cs (1)
112
internal sealed override ParameterSymbol?
ExtensionParameter
=> null;
Symbols\Synthesized\SynthesizedPrivateImplementationDetailsType.cs (1)
95
internal sealed override ParameterSymbol?
ExtensionParameter
=> null;
Microsoft.CodeAnalysis.CSharp.Symbol.UnitTests (1)
Symbols\MockNamedTypeSymbol.cs (1)
342
internal sealed override ParameterSymbol
ExtensionParameter
=> null;
116 references to ExtensionParameter
Microsoft.CodeAnalysis.CSharp (82)
Binder\Binder.ValueChecks.cs (1)
2376
var extensionParameter = symbol.ContainingType.
ExtensionParameter
;
Binder\Binder_Conversions.cs (1)
2978
return method.ContainingType.
ExtensionParameter
;
Binder\Binder_Crefs.cs (2)
297
|| nested.
ExtensionParameter
is null
308
parameters: [constructedNested.
ExtensionParameter
],
Binder\Binder_Expressions.cs (3)
3795
var receiverParameter = ((NamedTypeSymbol)methodResult.Member.ContainingSymbol).
ExtensionParameter
;
8048
Debug.Assert(propertySymbol.ContainingType.
ExtensionParameter
is not null);
8052
receiver = CheckAndConvertExtensionReceiver(receiver, propertySymbol.ContainingType.
ExtensionParameter
, diagnostics);
Binder\Binder_Invocation.cs (1)
1313
receiver = CheckAndConvertExtensionReceiver(receiver, method.ContainingType.
ExtensionParameter
, diagnostics);
Binder\Binder_Lookup.cs (1)
210
if (extensionDeclaration.
ExtensionParameter
is null)
Binder\Binder_Operators.cs (5)
477
Debug.Assert(method.ContainingType.
ExtensionParameter
is not null);
496
leftConversion = CreateConversion(node, leftPlaceholder, conversion, isCast: false, conversionGroupOpt: null, method.ContainingType.
ExtensionParameter
.Type, diagnostics);
3433
Debug.Assert(method.ContainingType.
ExtensionParameter
is not null);
3452
operandConversion = CreateConversion(node, operandPlaceholder, conversion, isCast: false, conversionGroupOpt: null, method.ContainingType.
ExtensionParameter
.Type, diagnostics);
3733
if (extensionDeclaration.
ExtensionParameter
is not { } extensionParameter ||
Binder\ForEachLoopBinder.cs (2)
252
else if (getEnumeratorMethod.GetIsNewExtensionMember() && getEnumeratorMethod.ContainingType.
ExtensionParameter
.RefKind == RefKind.Ref)
1048
builder.CollectionType = builder.GetEnumeratorInfo.Method.ContainingType.
ExtensionParameter
.Type;
Binder\InMethodBinder.cs (1)
340
if (_methodSymbol.ContainingType.
ExtensionParameter
is { Name: not "" } receiver)
Binder\RefSafetyAnalysis.cs (1)
672
return method.ContainingType.
ExtensionParameter
;
Binder\Semantics\Conversions\Conversions.cs (1)
347
thisParameter = method.ContainingType.
ExtensionParameter
;
Binder\Semantics\Operators\BinaryOperatorOverloadResolution.cs (7)
1501
if (extensionDeclaration.
ExtensionParameter
is null)
1586
Debug.Assert(candidate.Method.ContainingType.
ExtensionParameter
is not null);
1604
var extensionParameter = method.ContainingType.
ExtensionParameter
;
1613
Debug.Assert(candidate.Method.ContainingType.
ExtensionParameter
is not null);
1617
if (!candidate.Method.ContainingType.
ExtensionParameter
.Type.IsValidNullableTypeArgument() ||
1618
!Conversions.ConvertExtensionMethodThisArg(MakeNullable(candidate.Method.ContainingType.
ExtensionParameter
.Type), operand.Type, ref useSiteInfo, isMethodGroupConversion: false).Exists)
1623
else if (!Conversions.ConvertExtensionMethodThisArg(candidate.Method.ContainingType.
ExtensionParameter
.Type, operand.Type, ref useSiteInfo, isMethodGroupConversion: false).Exists)
Binder\Semantics\Operators\UnaryOperatorOverloadResolution.cs (5)
150
if (extensionDeclaration.
ExtensionParameter
is null)
227
Debug.Assert(candidate.Method.ContainingType.
ExtensionParameter
is not null);
233
if (!candidate.Method.ContainingType.
ExtensionParameter
.Type.IsValidNullableTypeArgument() ||
234
!Conversions.ConvertExtensionMethodThisArg(MakeNullable(candidate.Method.ContainingType.
ExtensionParameter
.Type), operand.Type, ref useSiteInfo, isMethodGroupConversion: false).Exists)
239
else if (!Conversions.ConvertExtensionMethodThisArg(candidate.Method.ContainingType.
ExtensionParameter
.Type, operand.Type, ref useSiteInfo, isMethodGroupConversion: false).Exists)
Binder\Semantics\OverloadResolution\MethodTypeInference.cs (4)
3196
Debug.Assert(extension.
ExtensionParameter
is not null);
3197
Debug.Assert(!extension.
ExtensionParameter
.Type.IsDynamic());
3206
[extension.
ExtensionParameter
.TypeWithAnnotations],
3207
[extension.
ExtensionParameter
.RefKind],
Binder\Semantics\OverloadResolution\OverloadResolution.cs (4)
2596
ParameterSymbol? extensionParameter = member.ContainingType.
ExtensionParameter
;
2679
bool isExtensionParameterOfStaticExtensionMember = parameter is { ContainingSymbol: NamedTypeSymbol { IsExtension: true,
ExtensionParameter
: var extensionParameter } }
3906
Debug.Assert(member.ContainingType.
ExtensionParameter
is not null);
3907
hasSomeRefKinds |= member.ContainingType.
ExtensionParameter
.RefKind != RefKind.None;
Binder\Semantics\OverloadResolution\OverloadResolution_ArgsToParameters.cs (1)
62
return [symbol.ContainingType.
ExtensionParameter
.TypeWithAnnotations, .. symbol.GetParameterTypes()];
Binder\WithExtensionParameterBinder.cs (2)
28
if (_type.
ExtensionParameter
is { Name: not "" } parameter &&
46
if (_type.
ExtensionParameter
is { Name: not "" } parameter && parameter.Name == name)
FlowAnalysis\NullableWalker.cs (8)
4448
|| extension.
ExtensionParameter
is not { } extensionParameter)
6584
Debug.Assert(node.Method.ContainingType.
ExtensionParameter
is not null);
6585
annotations = node.Method.ContainingType.
ExtensionParameter
.FlowAnalysisAnnotations;
6759
ParameterSymbol? extensionParameter = method.ContainingType.
ExtensionParameter
;
6794
ParameterSymbol? extensionParameter = method.ContainingType.
ExtensionParameter
;
10491
ParameterSymbol? receiverParameter = isNewExtensionMethod ? method.ContainingType.
ExtensionParameter
: method.Parameters[0];
10878
var receiverParameter = isNewExtension ? deconstructMethod.ContainingType.
ExtensionParameter
: deconstructMethod.Parameters[0];
11480
var extensionParameter = property.ContainingType.
ExtensionParameter
;
Lowering\LocalRewriter\LocalRewriter.cs (1)
1149
ParameterSymbol? extensionParameter = member.ContainingType.
ExtensionParameter
;
Lowering\LocalRewriter\LocalRewriter_Call.cs (4)
952
Debug.Assert(methodOrIndexer.ContainingType.
ExtensionParameter
is { });
954
RefKind receiverRefKind = methodOrIndexer.ContainingType.
ExtensionParameter
.RefKind;
1332
Debug.Assert(methodOrIndexer.ContainingType.
ExtensionParameter
is not null);
1333
return methodOrIndexer.ContainingType.
ExtensionParameter
.Type as NamedTypeSymbol;
Lowering\LocalRewriter\LocalRewriter_CompoundAssignmentOperator.cs (1)
258
return symbol.GetIsNewExtensionMember() && !symbol.IsStatic && symbol.ContainingType.
ExtensionParameter
is { RefKind: RefKind.None, Type.IsReferenceType: false };
Lowering\LocalRewriter\LocalRewriter_ObjectOrCollectionInitializerExpression.cs (1)
701
(memberSymbol.GetIsNewExtensionMember() && !memberSymbol.IsStatic && ConversionsBase.IsValidExtensionMethodThisArgConversion(_compilation.Conversions.ClassifyConversionFromType(rewrittenReceiver.Type, memberSymbol.ContainingType.
ExtensionParameter
!.Type, isChecked: false, ref discardedUseSiteInfo))) ||
Symbols\Extensions\SourceExtensionImplementationMethodSymbol.cs (1)
25
Debug.Assert(sourceMethod.IsStatic || sourceMethod.ContainingType.
ExtensionParameter
is not null);
Symbols\MemberSymbolExtensions.cs (3)
111
&& symbol.ContainingType.
ExtensionParameter
is { } foundExtensionParameter)
186
if (symbol.GetIsNewExtensionMember() && symbol.ContainingType.
ExtensionParameter
is { } extensionParameter)
197
bool hasExtensionParameter = symbol.GetIsNewExtensionMember() && symbol.ContainingType.
ExtensionParameter
is { };
Symbols\Metadata\PE\PEParameterSymbol.cs (1)
907
if (ContainingSymbol is { IsStatic: false, ContainingSymbol: NamedTypeSymbol { IsExtension: true,
ExtensionParameter
.Name: var extensionParameterName } }
Symbols\PublicModel\NamedTypeSymbol.cs (1)
222
IParameterSymbol? INamedTypeSymbol.ExtensionParameter => UnderlyingNamedTypeSymbol.
ExtensionParameter
?.GetPublicSymbol();
Symbols\PublicModel\TypeSymbol.cs (1)
167
? namedType.
ExtensionParameter
?.GetPublicSymbol()
Symbols\Retargeting\RetargetingNamedTypeSymbol.cs (1)
102
var extensionParameter = _underlyingType.
ExtensionParameter
is { } receiverParameter ? new RetargetingExtensionReceiverParameterSymbol(this, receiverParameter) : null;
Symbols\Source\ParameterHelpers.cs (2)
221
if (owner.ContainingType.
ExtensionParameter
is { Name: not "" } receiver)
527
if (extension.
ExtensionParameter
is not { } extensionParameter || extension.ContainingType.Arity != 0)
Symbols\Source\SourceComplexParameterSymbol.cs (1)
1276
ParameterSymbol? extensionParameter = ContainingType.
ExtensionParameter
;
Symbols\Source\SourceMemberContainerSymbol.cs (2)
1423
if (this.
ExtensionParameter
is { Type: NamedTypeSymbol { Name: var extendedTypeName } })
3859
(method.IsStatic || type.
ExtensionParameter
is not null))
Symbols\Source\SourceMemberMethodSymbol.cs (1)
381
if (this.GetIsNewExtensionMember() && ContainingType.
ExtensionParameter
is { } extensionParameter)
Symbols\Source\SourceNamedTypeSymbol_Extension.cs (3)
1176
if (extension.
ExtensionParameter
is null)
1197
Debug.Assert(result.ContainingType.
ExtensionParameter
is not null);
1199
Conversion conversion = compilation.Conversions.ConvertExtensionMethodThisArg(parameterType: result.ContainingType.
ExtensionParameter
.Type, receiverType, ref discardedUseSiteInfo, isMethodGroupConversion: false);
Symbols\Source\SourceOrdinaryMethodSymbol.cs (1)
251
else if (ContainingType is { IsExtension: true,
ExtensionParameter
.Name: "" } && !IsStatic)
Symbols\Source\SourcePropertySymbol.cs (2)
702
if (ContainingType.
ExtensionParameter
is { Name: ParameterSymbol.ValueParameterName })
708
if (this.GetIsNewExtensionMember() && ContainingType.
ExtensionParameter
is { } extensionParameter &&
Symbols\Source\SourcePropertySymbolBase.cs (1)
1143
else if (ContainingType is { IsExtension: true,
ExtensionParameter
.Name: "" } && !IsStatic)
Symbols\Source\SourceUserDefinedOperatorSymbolBase.cs (3)
81
if (this.ContainingType is { IsExtension: true,
ExtensionParameter
.Type.IsStatic: true })
385
if (ContainingType is { IsExtension: true,
ExtensionParameter
: { Type.IsStatic: false } extensionParameter } && !IsStatic &&
895
if (ContainingType is { IsExtension: true,
ExtensionParameter
.Type: var extendedType })
Symbols\SubstitutedNamedTypeSymbol.cs (1)
514
var unsubstitutedParameter = OriginalDefinition.
ExtensionParameter
;
Microsoft.CodeAnalysis.CSharp.Emit3.UnitTests (34)
Semantics\ExtensionTests.cs (20)
3890
Assert.Equal(RefKind.RefReadOnlyParameter, m.GlobalNamespace.GetTypeMember("Extensions").GetTypeMembers().Single().
ExtensionParameter
.RefKind);
4320
AssertEx.Equal(ScopedKind.ScopedRef, m.GlobalNamespace.GetTypeMember("Extensions").GetTypeMembers().Single().
ExtensionParameter
.EffectiveScope);
4368
AssertEx.Equal("System.String?", extensions[0].
ExtensionParameter
.TypeWithAnnotations.ToTestDisplayString());
4369
AssertEx.Equal("System.String?", extensions[1].
ExtensionParameter
.TypeWithAnnotations.ToTestDisplayString());
4401
Assert.True(extensions[0].
ExtensionParameter
.Type.IsNativeIntegerType);
4402
Assert.True(extensions[1].
ExtensionParameter
.Type.IsNativeIntegerType);
5219
AssertEx.Equal("System.Object o", m.GlobalNamespace.GetTypeMember("Extensions").GetTypeMembers().Single().
ExtensionParameter
.ToTestDisplayString());
8966
AssertEx.Equal("System.Object _", extensions[0].
ExtensionParameter
.ToTestDisplayString());
8972
AssertEx.Equal("System.Object value", extensions[1].
ExtensionParameter
.ToTestDisplayString());
23774
Assert.False(underlying.
ExtensionParameter
.HasInterpolatedStringHandlerArgumentError);
23775
Assert.True(underlying.
ExtensionParameter
.InterpolatedStringHandlerArgumentIndexes.IsEmpty);
23827
Assert.True(underlying.
ExtensionParameter
.HasInterpolatedStringHandlerArgumentError);
23828
Assert.True(underlying.
ExtensionParameter
.InterpolatedStringHandlerArgumentIndexes.IsEmpty);
23958
Assert.True(symbol.
ExtensionParameter
.HasInterpolatedStringHandlerArgumentError);
23959
Assert.True(symbol.
ExtensionParameter
.InterpolatedStringHandlerArgumentIndexes.IsEmpty);
24005
Assert.False(underlying.
ExtensionParameter
.HasInterpolatedStringHandlerArgumentError);
24006
Assert.True(underlying.
ExtensionParameter
.InterpolatedStringHandlerArgumentIndexes.IsEmpty);
29678
AssertEx.Equal("System.Object value", extension.
ExtensionParameter
.ToTestDisplayString());
48318
AssertEx.Equal("System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute(false)", extensions[0].
ExtensionParameter
.GetAttributes().Single().ToString());
48324
AssertEx.Equal("System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute(true)", extensions[1].
ExtensionParameter
.GetAttributes().Single().ToString());
Semantics\ExtensionTests2.cs (14)
24193
Assert.Equal(NullableAnnotation.NotAnnotated, extension.
ExtensionParameter
.TypeWithAnnotations.NullableAnnotation);
24284
var tupleElements = extension.
ExtensionParameter
.Type.TupleElementTypesWithAnnotations;
24399
var typeArguments = ((NamedTypeSymbol)extension.
ExtensionParameter
.Type).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics;
24656
Assert.Equal(["AAttribute", "BAttribute"], extension.
ExtensionParameter
.GetAttributes().Select(a => a.ToString()));
24657
Assert.Equal(module is SourceModuleSymbol ? "" : "value", extension.
ExtensionParameter
.Name);
24744
Assert.Equal(["""MyAttribute(10, "hello", P = 20, P2 = "hello2")"""], extension.
ExtensionParameter
.GetAttributes().Select(a => a.ToString()));
24745
Assert.Equal("i", extension.
ExtensionParameter
.Name);
25369
Assert.Equal(["System.Diagnostics.CodeAnalysis.UnscopedRefAttribute"], extension.
ExtensionParameter
.GetAttributes().Select(a => a.ToString()));
25398
Assert.Equal(["System.Diagnostics.CodeAnalysis.AllowNullAttribute"], extension.
ExtensionParameter
.GetAttributes().Select(a => a.ToString()));
27266
Assert.Equal(["AAttribute(1)"], extensions[0].
ExtensionParameter
.GetAttributes().Select(a => a.ToString()));
27267
Assert.Equal(["AAttribute(2)"], extensions[1].
ExtensionParameter
.GetAttributes().Select(a => a.ToString()));
31411
Assert.Equal("AAttribute", extension.
ExtensionParameter
.GetAttributes().Single().ToString());
31655
Assert.Equal("AAttribute", extension.
ExtensionParameter
.GetAttributes().Single().ToString());
31919
Assert.Equal("AAttribute", extension.
ExtensionParameter
.GetAttributes().Single().ToString());