17 overrides of ExtensionParameter
Microsoft.CodeAnalysis.CSharp (16)
Symbols\AnonymousTypes\PublicSymbols\AnonymousManager.TypeOrDelegatePublicSymbol.cs (1)
50internal sealed override ParameterSymbol? ExtensionParameter => null;
Symbols\AnonymousTypes\SynthesizedSymbols\AnonymousType.TypeOrDelegateTemplateSymbol.cs (1)
128internal sealed override ParameterSymbol? ExtensionParameter => null;
Symbols\ErrorTypeSymbol.cs (1)
109internal sealed override ParameterSymbol? ExtensionParameter => null;
Symbols\Metadata\PE\PENamedTypeSymbol.cs (1)
408internal sealed override ParameterSymbol? ExtensionParameter
Symbols\NativeIntegerTypeSymbol.cs (1)
188internal sealed override ParameterSymbol? ExtensionParameter => null;
Symbols\Retargeting\RetargetingNamedTypeSymbol.cs (1)
102internal sealed override ParameterSymbol ExtensionParameter
Symbols\Source\ImplicitNamedTypeSymbol.cs (1)
178internal sealed override ParameterSymbol ExtensionParameter => null;
Symbols\Source\SourceNamedTypeSymbol_Extension.cs (1)
1011internal sealed override ParameterSymbol? ExtensionParameter
Symbols\SubstitutedNamedTypeSymbol.cs (1)
496internal sealed override ParameterSymbol? ExtensionParameter
Symbols\Synthesized\ReadOnlyListType\SynthesizedReadOnlyListEnumeratorTypeSymbol.cs (1)
181internal sealed override ParameterSymbol? ExtensionParameter => null;
Symbols\Synthesized\ReadOnlyListType\SynthesizedReadOnlyListTypeSymbol.cs (1)
858internal sealed override ParameterSymbol? ExtensionParameter => null;
Symbols\Synthesized\SynthesizedContainer.cs (1)
51internal sealed override ParameterSymbol? ExtensionParameter => null;
Symbols\Synthesized\SynthesizedEmbeddedAttributeSymbol.cs (1)
119internal sealed override ParameterSymbol? ExtensionParameter => null;
Symbols\Synthesized\SynthesizedHotReloadExceptionSymbol.cs (1)
125internal sealed override ParameterSymbol? ExtensionParameter => null;
Symbols\Synthesized\SynthesizedInlineArrayTypeSymbol.cs (1)
112internal sealed override ParameterSymbol? ExtensionParameter => null;
Symbols\Synthesized\SynthesizedPrivateImplementationDetailsType.cs (1)
95internal sealed override ParameterSymbol? ExtensionParameter => null;
Microsoft.CodeAnalysis.CSharp.Symbol.UnitTests (1)
Symbols\MockNamedTypeSymbol.cs (1)
342internal sealed override ParameterSymbol ExtensionParameter => null;
122 references to ExtensionParameter
Microsoft.CodeAnalysis.CSharp (83)
Binder\Binder.ValueChecks.cs (1)
2376var extensionParameter = symbol.ContainingType.ExtensionParameter;
Binder\Binder_Conversions.cs (1)
2984return method.ContainingType.ExtensionParameter;
Binder\Binder_Crefs.cs (2)
297|| nested.ExtensionParameter is null 308parameters: [constructedNested.ExtensionParameter],
Binder\Binder_Expressions.cs (3)
3852var receiverParameter = ((NamedTypeSymbol)methodResult.Member.ContainingSymbol).ExtensionParameter; 8137Debug.Assert(propertySymbol.ContainingType.ExtensionParameter is not null); 8141receiver = CheckAndConvertExtensionReceiver(receiver, propertySymbol.ContainingType.ExtensionParameter, diagnostics);
Binder\Binder_Invocation.cs (1)
1298receiver = CheckAndConvertExtensionReceiver(receiver, method.ContainingType.ExtensionParameter, diagnostics);
Binder\Binder_Operators.cs (5)
490Debug.Assert(method.ContainingType.ExtensionParameter is not null); 509leftConversion = CreateConversion(node, leftPlaceholder, conversion, isCast: false, conversionGroupOpt: null, method.ContainingType.ExtensionParameter.Type, diagnostics); 3579Debug.Assert(method.ContainingType.ExtensionParameter is not null); 3598operandConversion = CreateConversion(node, operandPlaceholder, conversion, isCast: false, conversionGroupOpt: null, method.ContainingType.ExtensionParameter.Type, diagnostics); 3907var extensionParameter = op.ContainingType.ExtensionParameter;
Binder\ForEachLoopBinder.cs (2)
252else if (getEnumeratorMethod.IsExtensionBlockMember() && getEnumeratorMethod.ContainingType.ExtensionParameter.RefKind == RefKind.Ref) 1042builder.CollectionType = builder.GetEnumeratorInfo.Method.ContainingType.ExtensionParameter.Type;
Binder\InMethodBinder.cs (1)
340if (_methodSymbol.ContainingType.ExtensionParameter is { Name: not "" } receiver)
Binder\RefSafetyAnalysis.cs (1)
691return method.ContainingType.ExtensionParameter;
Binder\Semantics\Conversions\Conversions.cs (1)
347thisParameter = method.ContainingType.ExtensionParameter;
Binder\Semantics\Operators\BinaryOperatorOverloadResolution.cs (7)
1505Debug.Assert(extensionCandidatesInSingleScope.All(static m => m.ContainingType.ExtensionParameter is not null)); 1588Debug.Assert(candidate.Method.ContainingType.ExtensionParameter is not null); 1606var extensionParameter = method.ContainingType.ExtensionParameter; 1615Debug.Assert(candidate.Method.ContainingType.ExtensionParameter is not null); 1619if (!candidate.Method.ContainingType.ExtensionParameter.Type.IsValidNullableTypeArgument() || 1620!Conversions.ConvertExtensionMethodThisArg(MakeNullable(candidate.Method.ContainingType.ExtensionParameter.Type), operand.Type, ref useSiteInfo, isMethodGroupConversion: false).Exists) 1625else if (!Conversions.ConvertExtensionMethodThisArg(candidate.Method.ContainingType.ExtensionParameter.Type, operand.Type, ref useSiteInfo, isMethodGroupConversion: false).Exists)
Binder\Semantics\Operators\UnaryOperatorOverloadResolution.cs (5)
146Debug.Assert(extensionCandidatesInSingleScope.All(static m => m.ContainingType.ExtensionParameter is not null)); 221Debug.Assert(candidate.Method.ContainingType.ExtensionParameter is not null); 227if (!candidate.Method.ContainingType.ExtensionParameter.Type.IsValidNullableTypeArgument() || 228!Conversions.ConvertExtensionMethodThisArg(MakeNullable(candidate.Method.ContainingType.ExtensionParameter.Type), operand.Type, ref useSiteInfo, isMethodGroupConversion: false).Exists) 233else if (!Conversions.ConvertExtensionMethodThisArg(candidate.Method.ContainingType.ExtensionParameter.Type, operand.Type, ref useSiteInfo, isMethodGroupConversion: false).Exists)
Binder\Semantics\OverloadResolution\MethodTypeInference.cs (4)
3200Debug.Assert(extension.ExtensionParameter is not null); 3201Debug.Assert(!extension.ExtensionParameter.Type.IsDynamic()); 3210[extension.ExtensionParameter.TypeWithAnnotations], 3211[extension.ExtensionParameter.RefKind],
Binder\Semantics\OverloadResolution\OverloadResolution.cs (4)
2596ParameterSymbol? extensionParameter = member.ContainingType.ExtensionParameter; 2679bool isExtensionParameterOfStaticExtensionMember = parameter is { ContainingSymbol: NamedTypeSymbol { IsExtension: true, ExtensionParameter: var extensionParameter } } 3906Debug.Assert(member.ContainingType.ExtensionParameter is not null); 3907hasSomeRefKinds |= member.ContainingType.ExtensionParameter.RefKind != RefKind.None;
Binder\Semantics\OverloadResolution\OverloadResolution_ArgsToParameters.cs (1)
62return [symbol.ContainingType.ExtensionParameter.TypeWithAnnotations, .. symbol.GetParameterTypes()];
Binder\WithExtensionParameterBinder.cs (2)
28if (_type.ExtensionParameter is { Name: not "" } parameter && 46if (_type.ExtensionParameter is { Name: not "" } parameter && parameter.Name == name)
FlowAnalysis\NullableWalker.cs (8)
4444|| extension.ExtensionParameter is not { } extensionParameter) 6580Debug.Assert(node.Method.ContainingType.ExtensionParameter is not null); 6581annotations = node.Method.ContainingType.ExtensionParameter.FlowAnalysisAnnotations; 6755ParameterSymbol? extensionParameter = method.ContainingType.ExtensionParameter; 6790ParameterSymbol? extensionParameter = method.ContainingType.ExtensionParameter; 10487ParameterSymbol? receiverParameter = isNewExtensionMethod ? method.ContainingType.ExtensionParameter : method.Parameters[0]; 10874var receiverParameter = isNewExtension ? deconstructMethod.ContainingType.ExtensionParameter : deconstructMethod.Parameters[0]; 11476var extensionParameter = property.ContainingType.ExtensionParameter;
Lowering\LocalRewriter\LocalRewriter.cs (1)
1149ParameterSymbol? extensionParameter = member.ContainingType.ExtensionParameter;
Lowering\LocalRewriter\LocalRewriter_Call.cs (4)
952Debug.Assert(methodOrIndexer.ContainingType.ExtensionParameter is { }); 954RefKind receiverRefKind = methodOrIndexer.ContainingType.ExtensionParameter.RefKind; 1332Debug.Assert(methodOrIndexer.ContainingType.ExtensionParameter is not null); 1333return methodOrIndexer.ContainingType.ExtensionParameter.Type as NamedTypeSymbol;
Lowering\LocalRewriter\LocalRewriter_CompoundAssignmentOperator.cs (1)
258return symbol.IsExtensionBlockMember() && !symbol.IsStatic && symbol.ContainingType.ExtensionParameter is { RefKind: RefKind.None, Type.IsReferenceType: false };
Lowering\LocalRewriter\LocalRewriter_ObjectOrCollectionInitializerExpression.cs (1)
701(memberSymbol.IsExtensionBlockMember() && !memberSymbol.IsStatic && ConversionsBase.IsValidExtensionMethodThisArgConversion(_compilation.Conversions.ClassifyConversionFromType(rewrittenReceiver.Type, memberSymbol.ContainingType.ExtensionParameter!.Type, isChecked: false, ref discardedUseSiteInfo))) ||
Symbols\Extensions\SourceExtensionImplementationMethodSymbol.cs (1)
25Debug.Assert(sourceMethod.IsStatic || sourceMethod.ContainingType.ExtensionParameter is not null);
Symbols\MemberSymbolExtensions.cs (3)
111&& symbol.ContainingType.ExtensionParameter is { } foundExtensionParameter) 186if (symbol.IsExtensionBlockMember() && symbol.ContainingType.ExtensionParameter is { } extensionParameter) 197bool hasExtensionParameter = symbol.IsExtensionBlockMember() && symbol.ContainingType.ExtensionParameter is { };
Symbols\Metadata\PE\PEParameterSymbol.cs (1)
919if (ContainingSymbol is { IsStatic: false, ContainingSymbol: NamedTypeSymbol { IsExtension: true, ExtensionParameter.Name: var extensionParameterName } }
Symbols\NamedTypeSymbol.cs (1)
425if (nestedType is not { IsExtension: true, ExtensionParameter: { } extensionParameter }
Symbols\PublicModel\NamedTypeSymbol.cs (1)
222IParameterSymbol? INamedTypeSymbol.ExtensionParameter => UnderlyingNamedTypeSymbol.ExtensionParameter?.GetPublicSymbol();
Symbols\PublicModel\TypeSymbol.cs (1)
167? namedType.ExtensionParameter?.GetPublicSymbol()
Symbols\Retargeting\RetargetingNamedTypeSymbol.cs (1)
108var extensionParameter = _underlyingType.ExtensionParameter is { } receiverParameter ? new RetargetingExtensionReceiverParameterSymbol(this, receiverParameter) : null;
Symbols\Source\ParameterHelpers.cs (2)
221if (owner.ContainingType.ExtensionParameter is { Name: not "" } receiver) 535if (extension.ExtensionParameter is not { } extensionParameter || extension.ContainingType?.Arity != 0)
Symbols\Source\SourceComplexParameterSymbol.cs (2)
710if (parameter.ContainingType.ExtensionParameter is { } extensionParameter 1317ParameterSymbol? extensionParameter = ContainingType.ExtensionParameter;
Symbols\Source\SourceMemberContainerSymbol.cs (2)
1423if (this.ExtensionParameter is { Type: NamedTypeSymbol { Name: var extendedTypeName } }) 3859(method.IsStatic || type.ExtensionParameter is not null))
Symbols\Source\SourceMemberMethodSymbol.cs (1)
381if (this.IsExtensionBlockMember() && ContainingType.ExtensionParameter is { } extensionParameter)
Symbols\Source\SourceNamedTypeSymbol_Extension.cs (3)
1180if (extension.ExtensionParameter is null) 1205Debug.Assert(result.ContainingType.ExtensionParameter is not null); 1207Conversion conversion = conversions.ConvertExtensionMethodThisArg(parameterType: result.ContainingType.ExtensionParameter.Type, receiverType, ref discardedUseSiteInfo, isMethodGroupConversion: false);
Symbols\Source\SourceOrdinaryMethodSymbol.cs (1)
253else if (ContainingType is { IsExtension: true, ExtensionParameter.Name: "" } && !IsStatic)
Symbols\Source\SourcePropertySymbol.cs (2)
701if (ContainingType.ExtensionParameter is { Name: ParameterSymbol.ValueParameterName }) 707if (this.IsExtensionBlockMember() && ContainingType.ExtensionParameter is { } extensionParameter &&
Symbols\Source\SourcePropertySymbolBase.cs (1)
1143else if (ContainingType is { IsExtension: true, ExtensionParameter.Name: "" } && !IsStatic)
Symbols\Source\SourceUserDefinedOperatorSymbolBase.cs (3)
81if (this.ContainingType is { IsExtension: true, ExtensionParameter.Type.IsStatic: true }) 385if (ContainingType is { IsExtension: true, ExtensionParameter: { Type.IsStatic: false } extensionParameter } && !IsStatic && 895if (ContainingType is { IsExtension: true, ExtensionParameter.Type: var extendedType })
Symbols\SubstitutedNamedTypeSymbol.cs (1)
514var unsubstitutedParameter = OriginalDefinition.ExtensionParameter;
Microsoft.CodeAnalysis.CSharp.Emit.UnitTests (4)
CodeGen\CodeGenInParametersTests.cs (2)
5054m.GlobalNamespace.GetTypeMember("IntExtensions").GetTypeMembers().Single().ExtensionParameter.RefKind); 5074m.GlobalNamespace.GetTypeMember("EnumExtensions").GetTypeMembers().Single().ExtensionParameter.RefKind);
CodeGen\CodeGenRefOutTests.cs (2)
977m.GlobalNamespace.GetTypeMember("IntExtensions").GetTypeMembers().Single().ExtensionParameter.RefKind); 997m.GlobalNamespace.GetTypeMember("EnumExtensions").GetTypeMembers().Single().ExtensionParameter.RefKind);
Microsoft.CodeAnalysis.CSharp.Emit3.UnitTests (35)
Semantics\ExtensionTests.cs (21)
3880Assert.Equal(RefKind.RefReadOnlyParameter, m.GlobalNamespace.GetTypeMember("Extensions").GetTypeMembers().Single().ExtensionParameter.RefKind); 4311AssertEx.Equal(ScopedKind.ScopedRef, m.GlobalNamespace.GetTypeMember("Extensions").GetTypeMembers().Single().ExtensionParameter.EffectiveScope); 4359AssertEx.Equal("System.String?", extensions[0].ExtensionParameter.TypeWithAnnotations.ToTestDisplayString()); 4360AssertEx.Equal("System.String?", extensions[1].ExtensionParameter.TypeWithAnnotations.ToTestDisplayString()); 4392Assert.True(extensions[0].ExtensionParameter.Type.IsNativeIntegerType); 4393Assert.True(extensions[1].ExtensionParameter.Type.IsNativeIntegerType); 4635Assert.Equal("", extension.ExtensionParameter.Name); 5396AssertEx.Equal("System.Object o", m.GlobalNamespace.GetTypeMember("Extensions").GetTypeMembers().Single().ExtensionParameter.ToTestDisplayString()); 9143AssertEx.Equal("System.Object _", extensions[0].ExtensionParameter.ToTestDisplayString()); 9149AssertEx.Equal("System.Object", extensions[1].ExtensionParameter.ToTestDisplayString()); 23959Assert.False(underlying.ExtensionParameter.HasInterpolatedStringHandlerArgumentError); 23960Assert.True(underlying.ExtensionParameter.InterpolatedStringHandlerArgumentIndexes.IsEmpty); 24012Assert.True(underlying.ExtensionParameter.HasInterpolatedStringHandlerArgumentError); 24013Assert.True(underlying.ExtensionParameter.InterpolatedStringHandlerArgumentIndexes.IsEmpty); 24143Assert.True(symbol.ExtensionParameter.HasInterpolatedStringHandlerArgumentError); 24144Assert.True(symbol.ExtensionParameter.InterpolatedStringHandlerArgumentIndexes.IsEmpty); 24190Assert.False(underlying.ExtensionParameter.HasInterpolatedStringHandlerArgumentError); 24191Assert.True(underlying.ExtensionParameter.InterpolatedStringHandlerArgumentIndexes.IsEmpty); 29862AssertEx.Equal("System.Object", extension.ExtensionParameter.ToTestDisplayString()); 48725AssertEx.Equal("System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute(false)", extensions[0].ExtensionParameter.GetAttributes().Single().ToString()); 48731AssertEx.Equal("System.Diagnostics.CodeAnalysis.DoesNotReturnIfAttribute(true)", extensions[1].ExtensionParameter.GetAttributes().Single().ToString());
Semantics\ExtensionTests2.cs (14)
24288Assert.Equal(NullableAnnotation.NotAnnotated, extension.ExtensionParameter.TypeWithAnnotations.NullableAnnotation); 24379var tupleElements = extension.ExtensionParameter.Type.TupleElementTypesWithAnnotations; 24494var typeArguments = ((NamedTypeSymbol)extension.ExtensionParameter.Type).TypeArgumentsWithAnnotationsNoUseSiteDiagnostics; 24751Assert.Equal(["AAttribute", "BAttribute"], extension.ExtensionParameter.GetAttributes().Select(a => a.ToString())); 24752Assert.Equal("", extension.ExtensionParameter.Name); 24839Assert.Equal(["""MyAttribute(10, "hello", P = 20, P2 = "hello2")"""], extension.ExtensionParameter.GetAttributes().Select(a => a.ToString())); 24840Assert.Equal("i", extension.ExtensionParameter.Name); 25464Assert.Equal(["System.Diagnostics.CodeAnalysis.UnscopedRefAttribute"], extension.ExtensionParameter.GetAttributes().Select(a => a.ToString())); 25493Assert.Equal(["System.Diagnostics.CodeAnalysis.AllowNullAttribute"], extension.ExtensionParameter.GetAttributes().Select(a => a.ToString())); 27459Assert.Equal(["AAttribute(1)"], extensions[0].ExtensionParameter.GetAttributes().Select(a => a.ToString())); 27460Assert.Equal(["AAttribute(2)"], extensions[1].ExtensionParameter.GetAttributes().Select(a => a.ToString())); 32761Assert.Equal("AAttribute", extension.ExtensionParameter.GetAttributes().Single().ToString()); 33005Assert.Equal("AAttribute", extension.ExtensionParameter.GetAttributes().Single().ToString()); 33269Assert.Equal("AAttribute", extension.ExtensionParameter.GetAttributes().Single().ToString());