12 types derived from MethodSymbol
Microsoft.CodeAnalysis.CSharp (12)
Symbols\ErrorMethodSymbol.cs (1)
14internal sealed class ErrorMethodSymbol : MethodSymbol
Symbols\FunctionPointers\FunctionPointerMethodSymbol.cs (1)
18internal sealed class FunctionPointerMethodSymbol : MethodSymbol
Symbols\Metadata\PE\PEMethodSymbol.cs (1)
27internal sealed class PEMethodSymbol : MethodSymbol
Symbols\ReducedExtensionMethodSymbol.cs (1)
23internal sealed class ReducedExtensionMethodSymbol : MethodSymbol
Symbols\SignatureOnlyMethodSymbol.cs (1)
19internal sealed class SignatureOnlyMethodSymbol : MethodSymbol
Symbols\Source\SourceMethodSymbol.cs (1)
18internal abstract partial class SourceMethodSymbol : MethodSymbol
Symbols\Synthesized\SynthesizedEntryPointSymbol.cs (1)
20internal abstract class SynthesizedEntryPointSymbol : MethodSymbol
Symbols\Synthesized\SynthesizedGlobalMethodSymbol.cs (1)
21internal abstract class SynthesizedGlobalMethodSymbol : MethodSymbol, ISynthesizedGlobalMethodSymbol
Symbols\Synthesized\SynthesizedIntrinsicOperatorSymbol.cs (1)
16internal sealed class SynthesizedIntrinsicOperatorSymbol : MethodSymbol
Symbols\Synthesized\SynthesizedMethodSymbol.cs (1)
17internal abstract class SynthesizedMethodSymbol : MethodSymbol
Symbols\Synthesized\SynthesizedStaticConstructor.cs (1)
12internal sealed class SynthesizedStaticConstructor : MethodSymbol
Symbols\Wrapped\WrappedMethodSymbol.cs (1)
23internal abstract class WrappedMethodSymbol : MethodSymbol
3421 references to MethodSymbol
Microsoft.CodeAnalysis.CSharp (3421)
Binder\Binder.cs (7)
480return ((MethodSymbol)containingMember).IsScriptInitializer; 523internal virtual MethodSymbol? ParamsCollectionConstructorInProgress => null; 686symbol = ((MethodSymbol)symbol).ConstructedFrom; 785internal static bool IsDisallowedExtensionInOlderLangVer(MethodSymbol symbol) 790internal static void ReportDiagnosticsIfDisallowedExtension(BindingDiagnosticBag diagnostics, MethodSymbol method, SyntaxNode syntax) 798internal static void ReportDiagnosticsIfUnmanagedCallersOnly(BindingDiagnosticBag diagnostics, MethodSymbol symbol, SyntaxNodeOrToken syntax, bool isDelegateConversion) 942return new BoundBlock(statement.Syntax, locals, ImmutableArray<MethodSymbol>.CastUp(localFunctions), hasUnsafeModifier: false, instrumentation: null,
Binder\Binder.OperatorResolutionForReporting.cs (16)
28Debug.Assert(_nonExtensionResult is null or OverloadResolutionResult<MethodSymbol> or BinaryOperatorOverloadResolutionResult or UnaryOperatorOverloadResolutionResult); 29Debug.Assert(_extensionResult is null or OverloadResolutionResult<MethodSymbol> or BinaryOperatorOverloadResolutionResult or UnaryOperatorOverloadResolutionResult); 46public bool SaveResult(OverloadResolutionResult<MethodSymbol> result, bool isExtension) 89var results = ArrayBuilder<(MethodSymbol?, OperatorAnalysisResultKind)>.GetInstance(); 100ArrayBuilder<(MethodSymbol? member, OperatorAnalysisResultKind resultKind)> results, 171case OverloadResolutionResult<MethodSymbol> r1: 221static bool hadAmbiguousBestMethods(ArrayBuilder<(MethodSymbol?, OperatorAnalysisResultKind)> results, SyntaxNode node, Binder binder, BindingDiagnosticBag diagnostics) 223if (!tryGetTwoBest(results, out var first, out var second)) 245static void assertNone(ArrayBuilder<(MethodSymbol? member, OperatorAnalysisResultKind resultKind)> results, OperatorAnalysisResultKind kind) 250static bool tryGetTwoBest(ArrayBuilder<(MethodSymbol?, OperatorAnalysisResultKind)> results, [NotNullWhen(true)] out MethodSymbol? first, [NotNullWhen(true)] out MethodSymbol? second) 282static void populateResults(ArrayBuilder<(MethodSymbol?, OperatorAnalysisResultKind)> results, object? result) 286case OverloadResolutionResult<MethodSymbol> result1: 338case OverloadResolutionResult<MethodSymbol> result1:
Binder\Binder.ValueChecks.cs (49)
35/// This is the primary <see cref="MethodSymbol" /> used in ref safety analysis. 42internal MethodSymbol? Method { get; } 49internal MethodSymbol? SetMethod { get; } 56private MethodInfo(Symbol symbol, MethodSymbol? method, MethodSymbol? setMethod) 63internal static MethodInfo Create(MethodSymbol method) 90var method = replace(Method); 91var setMethod = replace(SetMethod); 99static MethodSymbol? replace(MethodSymbol? method) 106if (method.OriginalDefinition.TryGetCorrespondingExtensionImplementationMethod() is MethodSymbol implementationMethod) 146public static MethodInvocationInfo FromCallParts(MethodSymbol method, BoundExpression receiver, ImmutableArray<BoundExpression> args, ThreeState receiverIsSubjectToCloning) 222var binaryOperatorMethod = binaryOperator.BinaryOperatorMethod; 250public static MethodInvocationInfo FromUserDefinedOrUnionConversion(MethodSymbol operatorMethod, BoundExpression operand, bool hasAnyErrors) 294var method = compoundOperator.Operator.Method; 639var accessorForDefaultArguments = useSetAccessor 1106if (!isValueType || (RequiresAssignableVariable(valueKind) && (this.ContainingMemberOrLambda as MethodSymbol)?.IsEffectivelyReadOnly == true)) 1155var getItemOrSliceHelper = (MethodSymbol)Compilation.GetWellKnownTypeMember(elementAccess.GetItemOrSliceHelper); 1450if (RequiresAssignableVariable(valueKind) && !backingField.ContainingType.IsReferenceType && (this.ContainingMemberOrLambda as MethodSymbol)?.IsEffectivelyReadOnly == true) 1731MethodSymbol containingMethod = (MethodSymbol)containing; 1753if (!(ContainingMemberOrLambda is MethodSymbol method)) 1945MethodSymbol methodSymbol, 2037var setMethod = propertySymbol.GetOwnOrInheritedSetMethod(); 2107var getMethod = propertySymbol.GetOwnOrInheritedGetMethod(); 2157bool reportUseSite(MethodSymbol accessor) 2199if (!(containingMember is MethodSymbol method)) 2673var method = methodInvocationInfo.MethodInfo.Method; 2787static EscapeArgument getReceiverCore(MethodSymbol? method, BoundExpression receiver) 2877case MethodSymbol method: 2955static bool hasRefToRefStructThis(MethodSymbol? method) 3389Debug.Assert(underlyingParameter.ContainingSymbol is MethodSymbol); 3777var thisParam = ((MethodSymbol)_symbol).ThisParameter; 3825var methodSymbol = call.Method; 3885var methodSymbol = call.Method; 4072var thisParam = ((MethodSymbol)_symbol).ThisParameter; 4111var methodSymbol = call.Method; 4178var methodSymbol = call.Method; 4384var thisParam = ((MethodSymbol)_symbol).ThisParameter; 4558var constructorSymbol = objectCreation.Constructor; 4632var operatorMethod = conversion.Conversion.Method; 5081var thisParam = ((MethodSymbol)_symbol).ThisParameter; 5194var methodSymbol = call.Method; 5259var methodSymbol = call.Method; 5305var constructorSymbol = objectCreation.Constructor; 5417var operatorMethod = conversion.Conversion.Method; 5764ImmutableArray<MethodSymbol>.Empty); 5804ImmutableArray<MethodSymbol>.Empty);
Binder\Binder_Attributes.cs (7)
187MethodSymbol? attributeConstructor = null; 214binder.CheckAndCoerceArguments<MethodSymbol>(node, memberResolutionResult, analyzedArguments.ConstructorArguments, diagnostics, receiver: null, invokedAsExtensionMethod: false, out argsToParamsOpt); 287var attributeConstructor = boundAttribute.Constructor; 537var setMethod = propertySymbol.GetOwnOrInheritedSetMethod(); 647var getMethod = propertySymbol.GetMethod; 648var setMethod = propertySymbol.SetMethod; 705MethodSymbol attributeConstructor,
Binder\Binder_Await.cs (18)
60out MethodSymbol? getResult, 111var containingMethod = this.ContainingMemberOrLambda as MethodSymbol; 174var method = (MethodSymbol)containingMemberOrLambda; 274out MethodSymbol? getResult, 360if (!isApplicableMethod(exprType, member, node, diagnostics, this, out MethodSymbol? method, out Conversion argumentConversion)) 415[NotNullWhen(true)] out MethodSymbol? awaitMethod, 420if (member is not MethodSymbol method 447var substitutedMethod = method.Construct(exprType.TypeArgumentsWithAnnotationsNoUseSiteDiagnostics); 469static bool isValidConversion(TypeSymbol exprType, MethodSymbol method, SyntaxNode node, BindingDiagnosticBag diagnostics, Binder @this, out Conversion conversion) 497var awaitMethod = (MethodSymbol?)GetSpecialTypeMember( 513var runtimeAwaitAwaiterMethod = awaitMethod.Construct(awaiterType); 544static void reportObsoleteAndUnsafeDiagnostics(Binder @this, BindingDiagnosticBag diagnostics, MethodSymbol method, SyntaxNode syntax) 610var getAwaiterMethod = call.Method; 704private bool GetGetResultMethod(BoundExpression awaiterExpression, SyntaxNode node, TypeSymbol awaitedExpressionType, BindingDiagnosticBag diagnostics, out MethodSymbol? getResultMethod, [NotNullWhen(true)] out BoundExpression? getAwaiterGetResultCall) 748private static bool HasOptionalParameters(MethodSymbol method)
Binder\Binder_Constraints.cs (1)
466MethodSymbol method => (TypeSymbol)method.ContainingSymbol,
Binder\Binder_Conversions.cs (64)
478if (conversion.Method is MethodSymbol method && method.IsStatic) 606MethodSymbol? castUpMethod = TryFindCastUpMethod(sourceForCastUp, destination.OriginalDefinition); 633static void reportUseSiteOrMissing(MethodSymbol? method, object containingType, string methodName, SyntaxNode syntax, BindingDiagnosticBag diagnostics) 651internal static MethodSymbol? TryFindImplicitOperatorFromArray(TypeSymbol type) 661internal static MethodSymbol? TryFindImplicitOperatorFromSpan(TypeSymbol spanType, TypeSymbol readonlySpanType) 671private static MethodSymbol? TryFindImplicitOperator<TArg>(TypeSymbol type, TArg arg, 672Func<TArg, MethodSymbol, bool> predicate) 701internal static MethodSymbol? TryFindCastUpMethod(TypeSymbol source, TypeSymbol destination) 729internal static MethodSymbol? TryFindAsSpanCharMethod(CSharpCompilation compilation, TypeSymbol readOnlySpanType) 735MethodSymbol? result = null; 763private static MethodSymbol? TryFindSingleMethod<TArg>(TypeSymbol type, string name, TArg arg, Func<TArg, MethodSymbol, bool> predicate) 766MethodSymbol? result = null; 769if (member is MethodSymbol method && predicate(arg, method)) 916CollectionExpressionTypeKind collectionTypeKind, ImmutableArray<BoundNode> elements, BoundObjectOrCollectionValuePlaceholder? placeholder = null, BoundExpression? collectionCreation = null, MethodSymbol? collectionBuilderMethod = null, BoundCollectionBuilderElementsPlaceholder? collectionBuilderElementsPlaceholder = null) 938var collectionTypeKind = _conversion.GetCollectionExpressionTypeKind(out var elementType, out MethodSymbol? constructor, out bool isExpanded); 970MethodSymbol? constructor) 1021private readonly BoundCollectionExpression? TryConvertCollectionExpressionImplementsIEnumerableType(MethodSymbol? constructor) 1036_binder.HasParamsCollectionTypeInProgress(namedType, out NamedTypeSymbol? inProgress, out MethodSymbol? inProgressConstructor)) 1090ref readonly CollectionExpressionConverter @this, SyntaxNode syntax, MethodSymbol? constructor) 1300var list_T__ctor = (MethodSymbol?)@this._binder.Compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_Generic_List_T__ctor); 1301var list_T__ctorInt32 = (MethodSymbol?)@this._binder.Compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_Generic_List_T__ctorInt32); 1303var candidateConstructorsBuilder = ArrayBuilder<MethodSymbol>.GetInstance(); 1353static (BoundExpression? collectionCreation, MethodSymbol? collectionBuilderMethod, BoundCollectionBuilderElementsPlaceholder? elementsPlaceholder) bindCollectionBuilderInfo( 1362var projectionMethods = ArrayBuilder<MethodSymbol>.GetInstance(collectionBuilderMethods.Length); 1363foreach (var builderMethod in collectionBuilderMethods) 1381var overloadResolutionResult = OverloadResolutionResult<MethodSymbol>.GetInstance(); 1424var collectionBuilderMethod = underlyingMethod; 1496internal ImmutableArray<MethodSymbol> GetCollectionBuilderMethods( 1522ImmutableArray<MethodSymbol> collectMethods( 1543var result = ArrayBuilder<MethodSymbol>.GetInstance(); 1546if (candidate is not MethodSymbol { IsStatic: true } method) 1584MethodSymbol methodWithTargetTypeParameters; // builder method substituted with type parameters from target type 1631MethodSymbol collectionBuilderMethod, 1656out MethodSymbol? constructor, 1736out MemberResolutionResult<MethodSymbol> memberResolutionResult, 1770MemberResolutionResult<MethodSymbol> memberResolutionResult, 1777var method = memberResolutionResult.Member; 1812out MethodSymbol? constructor) 1833internal bool HasCollectionExpressionApplicableAddMethod(SyntaxNode syntax, TypeSymbol targetType, out ImmutableArray<MethodSymbol> addMethods, BindingDiagnosticBag diagnostics) 1878out ImmutableArray<MethodSymbol> addMethods) 1896out ImmutableArray<MethodSymbol> addMethods) 1937out ImmutableArray<MethodSymbol> addMethods) 1952out ImmutableArray<MethodSymbol> addMethods) 2042resolution.MethodGroup, diagnostics: diagnostics, out var addMethod); 2057static ImmutableArray<MethodSymbol> filterOutBadGenericMethods( 2059ImmutableArray<MemberResolutionResult<MethodSymbol>> finalApplicableCandidates, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 2062var resultBuilder = ArrayBuilder<MethodSymbol>.GetInstance(finalApplicableCandidates.Length); 2067var member = candidate.Member; 2093MethodSymbol? constructed = null; 2179OverloadResolutionResult<MethodSymbol> result, 2183out MethodSymbol? addMethod) 2953private static void CheckParameterModifierMismatchMethodConversion(SyntaxNode syntax, MethodSymbol lambdaOrMethod, TypeSymbol targetType, bool invokedAsExtensionMethod, BindingDiagnosticBag diagnostics) 2955MethodSymbol? delegateMethod; 3112ContainingMemberOrLambda is MethodSymbol { AreLocalsZeroed: false }) 3293private bool MemberGroupFinalValidation(BoundExpression? receiverOpt, MethodSymbol methodSymbol, SyntaxNode node, BindingDiagnosticBag diagnostics, bool invokedAsExtensionMethod) 3372Debug.Assert(memberSymbol is not MethodSymbol { MethodKind: not MethodKind.Constructor } || 3377if (receiverOpt != null || memberSymbol is not MethodSymbol { MethodKind: MethodKind.Constructor }) 3524internal bool MethodIsCompatibleWithDelegateOrFunctionPointer(BoundExpression? receiverOpt, bool isExtensionMethod, MethodSymbol method, TypeSymbol delegateType, Location errorLocation, BindingDiagnosticBag diagnostics) 3530MethodSymbol delegateOrFuncPtrMethod = delegateType switch 3686internal static ParameterSymbol? GetReceiverParameter(MethodSymbol method) 3719MethodSymbol selectedMethod = conversion.Method;
Binder\Binder_Crefs.cs (9)
502symbol.Kind != SymbolKind.Method || TypeSymbol.Equals(((MethodSymbol)symbol).ReturnType, returnType, TypeCompareKind.ConsiderEverything2), returnType); 641ImmutableArray<MethodSymbol> instanceConstructors = constructorType.InstanceConstructors; 760MethodSymbol signature = ((FunctionPointerTypeSymbol)type).Signature; 848if (((MethodSymbol)s).Arity == 0) 866s.Kind != SymbolKind.Method || ((MethodSymbol)s).Arity == 0); 976MethodSymbol candidateMethod = (MethodSymbol)candidate; 1000explicitInterfaceImplementations: ImmutableArray<MethodSymbol>.Empty); 1118symbol = ((MethodSymbol)symbol).Construct(typeArgumentsWithAnnotations.ToImmutableAndFree());
Binder\Binder_Deconstruct.cs (1)
686var deconstructMethod = ((BoundCall)result).Method;
Binder\Binder_Expressions.cs (113)
1351MethodSymbol method = this.ContainingMember() as MethodSymbol; 1492case MethodSymbol { AssociatedSymbol: SourcePropertySymbol property }: 1495case MethodSymbol { AssociatedSymbol.OriginalDefinition: PEPropertySymbol property } method when 1505if (contextualAttributeBinder is { AttributeTarget: MethodSymbol { AssociatedSymbol: SourcePropertySymbol property } }) 1567ContainingMember() is MethodSymbol { MethodKind: MethodKind.PropertyGet or MethodKind.PropertySet, AssociatedSymbol: PropertySymbol { IsIndexer: false } }) 2042var containingMethod = this.ContainingMemberOrLambda as MethodSymbol; 2087(this.ContainingMember() is MethodSymbol { MethodKind: MethodKind.Constructor } containingMember && (object)containingMember != primaryCtor)) && // We are in a non-primary instance constructor 2139bool capture = (this.ContainingMember() is MethodSymbol containingMethod && (object)primaryCtor != containingMethod); 2160this.ContainingMemberOrLambda is MethodSymbol { MethodKind: MethodKind.AnonymousFunction or MethodKind.LocalFunction } && 2714MethodSymbol symbolOpt = GetWellKnownTypeMember(WellKnownMember.System_Index__ctor, diagnostics, syntax: node) as MethodSymbol; 2724MethodSymbol symbolOpt = null; 2749symbolOpt = (MethodSymbol)GetWellKnownTypeMember( 2758symbolOpt = (MethodSymbol)GetWellKnownTypeMember( 2879ImmutableArray<MethodSymbol> originalUserDefinedConversions = conversion.OriginalUserDefinedOrUnionConversions; 3371&& ((MethodSymbol)containingSymbol).IsAsync 4864MethodSymbol constructor, 4888MethodSymbol constructor, 5024MemberResolutionResult<MethodSymbol> memberResolutionResult; 5025ImmutableArray<MethodSymbol> candidateConstructors; 5050MethodSymbol constructor, 5058MemberResolutionResult<MethodSymbol> memberResolutionResult, 5059ImmutableArray<MethodSymbol> candidateConstructors, 5069this.CheckAndCoerceArguments<MethodSymbol>(nonNullSyntax, memberResolutionResult, analyzedArguments, diagnostics, receiver: null, invokedAsExtensionMethod: false, out argsToParamsOpt); 5078MethodSymbol resultMember = memberResolutionResult.Member; 5198static void validateRecordCopyConstructor(MethodSymbol constructor, NamedTypeSymbol baseType, MethodSymbol resultMember, Location errorLocation, BindingDiagnosticBag diagnostics) 5249internal static bool IsUserDefinedRecordCopyConstructor(MethodSymbol constructor) 6282private static ImmutableSegmentedDictionary<string, Symbol> GetMembersRequiringInitialization(MethodSymbol constructor) 6294MethodSymbol constructor, 6628applicableMethods: ImmutableArray<MethodSymbol>.Empty, 6752internal ImmutableArray<MethodSymbol> FilterInaccessibleConstructors(ImmutableArray<MethodSymbol> constructors, bool allowProtectedConstructorsOfBaseType, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 6754ArrayBuilder<MethodSymbol> builder = null; 6758MethodSymbol constructor = constructors[i]; 6764builder = ArrayBuilder<MethodSymbol>.GetInstance(); 6777private bool IsConstructorAccessible(MethodSymbol constructor, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, bool allowProtectedConstructorsOfBaseType = false) 6853OverloadResolutionResult<MethodSymbol> overloadResolutionResult = OverloadResolutionResult<MethodSymbol>.GetInstance(); 6854ImmutableArray<MethodSymbol> accessibleConstructors = GetAccessibleConstructorsForOverloadResolution(type, ref useSiteInfo); 6903out MemberResolutionResult<MethodSymbol> memberResolutionResult, 6904out ImmutableArray<MethodSymbol> candidateConstructors, 6923MemberResolutionResult<MethodSymbol> memberResolutionResult, 6924ImmutableArray<MethodSymbol> candidateConstructors, 6943this.CheckAndCoerceArguments<MethodSymbol>(node, memberResolutionResult, analyzedArguments, diagnostics, receiver: null, invokedAsExtensionMethod: false, out argToParams); 6950var method = memberResolutionResult.Member; 7009MemberResolutionResult<MethodSymbol> memberResolutionResult, 7010ImmutableArray<MethodSymbol> candidateConstructors, 7026this.CheckAndCoerceArguments<MethodSymbol>(node, memberResolutionResult, analyzedArguments, diagnostics, receiver: null, invokedAsExtensionMethod: false, argsToParamsOpt: out _); 7309out MemberResolutionResult<MethodSymbol> memberResolutionResult, 7310out ImmutableArray<MethodSymbol> candidateConstructors, 7343ref ImmutableArray<MethodSymbol> candidateConstructors, 7344ImmutableArray<MethodSymbol> allInstanceConstructors, 7350out MemberResolutionResult<MethodSymbol> memberResolutionResult, 7354OverloadResolutionResult<MethodSymbol> result = OverloadResolutionResult<MethodSymbol>.GetInstance(); 7375OverloadResolutionResult<MethodSymbol> inaccessibleResult = OverloadResolutionResult<MethodSymbol>.GetInstance(); 7393default(MemberResolutionResult<MethodSymbol>); // Invalid results are not interesting - we have enough info in candidateConstructors. 7464private ImmutableArray<MethodSymbol> GetAccessibleConstructorsForOverloadResolution(NamedTypeSymbol type, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 7466ImmutableArray<MethodSymbol> allInstanceConstructors; 7470private ImmutableArray<MethodSymbol> GetAccessibleConstructorsForOverloadResolution(NamedTypeSymbol type, bool allowProtectedConstructorsOfBaseType, out ImmutableArray<MethodSymbol> allInstanceConstructors, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 8197var method = resolution.MethodGroup.Methods[0]; 8367lookupResult.Symbols.All(s => s.Kind == SymbolKind.Method) ? lookupResult.Symbols.SelectAsArray(s_toMethodSymbolFunc) : ImmutableArray<MethodSymbol>.Empty, 8510var builder = ArrayBuilder<MethodSymbol>.GetInstance(); 8513var m = s as MethodSymbol; 8968MethodSymbol method = methodGroup.Methods[i]; 9009var overloadResolutionResult = OverloadResolutionResult<MethodSymbol>.GetInstance(); 9086MethodSymbol representativeMethod = methodResult.OverloadResolutionResult is { } methodResolution 9897else if (convertedIndex is BoundObjectCreationExpression { Constructor: MethodSymbol constructor, Arguments: { Length: 2 } arguments, ArgsToParamsOpt: { IsDefaultOrEmpty: true }, InitializerExpressionOpt: null } && 10711var substring = (MethodSymbol)GetSpecialTypeMember(SpecialMember.System_String__SubstringIntInt, diagnostics, syntax); 10742candidate is MethodSymbol method && 10759void makeCall(SyntaxNode syntax, BoundExpression receiver, MethodSymbol method, 10785internal static bool MethodHasValidSliceSignature(MethodSymbol method) 10852property.GetOwnOrInheritedGetMethod()?.OriginalDefinition is MethodSymbol getMethod && 11040var method = node.LookupSymbolOpt as MethodSymbol; 11078var result = OverloadResolutionResult<MethodSymbol>.GetInstance(); 11104var method = GetUniqueSignatureFromMethodGroup(node, out bool useParams); 11121private MethodSymbol? GetUniqueSignatureFromMethodGroup_CSharp10(BoundMethodGroup node, out bool useParams) 11123MethodSymbol? method = null; 11124var methods = ArrayBuilder<MethodSymbol>.GetInstance(capacity: node.Methods.Length); 11125foreach (var m in node.Methods) 11150foreach (var m in methods) 11188if (extensionMember is MethodSymbol m) 11193var substituted = (MethodSymbol?)extensionMember.GetReducedAndFilteredSymbol(typeArguments, receiver.Type, Compilation, checkFullyInferred: true); 11233foreach (var reduced in methods) 11267static bool isCandidateUnique(ref MethodSymbol? method, MethodSymbol candidate) 11285bool memberCountsAsStatic = extensionMember is MethodSymbol { IsExtensionMethod: true } ? false : extensionMember.IsStatic; 11302private MethodSymbol? GetUniqueSignatureFromMethodGroup(BoundMethodGroup node, out bool useParams) 11310MethodSymbol? foundMethod = null; 11317var methods = ArrayBuilder<MethodSymbol>.GetInstance(capacity: node.Methods.Length); 11318foreach (var memberMethod in node.Methods) 11342var substituted = typeArguments.IsDefaultOrEmpty ? memberMethod : memberMethod.Construct(typeArguments); 11357foreach (var substituted in methods) 11390var methods = ArrayBuilder<MethodSymbol>.GetInstance(capacity: singleLookupResults.Count); 11402if (extensionMember is MethodSymbol) 11404var substituted = (MethodSymbol?)extensionMember.GetReducedAndFilteredSymbol(typeArguments, receiver.Type, Compilation, checkFullyInferred: true); 11419foreach (var method in methods) 11445static bool isCandidateUnique(ref MethodSymbol? foundMethod, MethodSymbol candidate) 11460bool satisfiesConstraintChecks(MethodSymbol method) 11487MethodSymbol methodSymbol, 11607MethodSymbol invoke = possibleDelegateType.DelegateInvokeMethod(); 11741return symbol is MethodSymbol method &&
Binder\Binder_Invocation.cs (36)
42private static ImmutableArray<MethodSymbol> GetOriginalMethods(OverloadResolutionResult<MethodSymbol> overloadResolutionResult) 52return ImmutableArray<MethodSymbol>.Empty; 55var builder = ArrayBuilder<MethodSymbol>.GetInstance(); 356result = BindDynamicInvocation(node, boundExpression, analyzedArguments, ImmutableArray<MethodSymbol>.Empty, diagnostics, queryClause); 403ImmutableArray<MethodSymbol> applicableMethods, 642var overloadResolutionResult = OverloadResolutionResult<MethodSymbol>.GetInstance(); 673private static bool HasApplicableConditionalMethod(ImmutableArray<MemberResolutionResult<MethodSymbol>> finalApplicableCandidates) 749ImmutableArray<MethodSymbol> originalMethods; 768Debug.Assert(methodGroup.LookupSymbolOpt is not MethodSymbol); 885private void ReportDynamicInvocationWarnings(SyntaxNode syntax, BoundMethodGroup methodGroup, BindingDiagnosticBag diagnostics, ImmutableArray<MemberResolutionResult<MethodSymbol>> finalApplicableCandidates) 925MemberResolutionResult<MethodSymbol> methodResolutionResult, 926MethodSymbol singleCandidate) 981MemberResolutionResult<MethodSymbol> methodResolutionResult) 983MethodSymbol singleCandidate = methodResolutionResult.LeastOverriddenMember; 990var resultWithSingleCandidate = OverloadResolutionResult<MethodSymbol>.GetInstance(); 1038(typeArgumentsOpt.IsDefault || ((MethodSymbol)(object)result.Member).CheckConstraints(new ConstraintsHelper.CheckConstraintsArgs(this.Compilation, this.Conversions, includeNullability: false, syntax.Location, candidateDiagnostics)))) 1142OverloadResolutionResult<MethodSymbol> result, 1211var method = methodResult.Member; 1388var method = property.GetMethod ?? property.SetMethod; 1399internal ThreeState ReceiverIsSubjectToCloning(BoundExpression? receiver, MethodSymbol method) 1458if (GetWellKnownTypeMember(Compilation, WellKnownMember.System_Runtime_InteropServices_UnknownWrapper__ctor, diagnostics, syntax: syntax) is MethodSymbol methodSymbol) 1467if (GetWellKnownTypeMember(Compilation, WellKnownMember.System_Runtime_InteropServices_DispatchWrapper__ctor, diagnostics, syntax: syntax) is MethodSymbol methodSymbol) 1907internal bool CheckImplicitThisCopyInReadOnlyMember(BoundExpression receiver, MethodSymbol method, BindingDiagnosticBag diagnostics) 1913ContainingMemberOrLambda is MethodSymbol containingMethod && 2043ImmutableArray<MethodSymbol> methods, 2051MethodSymbol method; 2055var constructedMethods = ArrayBuilder<MethodSymbol>.GetInstance(); 2056foreach (var m in methods) 2058MethodSymbol constructedMethod; 2098private static bool IsUnboundGeneric(MethodSymbol method) 2118private ImmutableArray<BoundExpression> BuildArgumentsForErrorRecovery(AnalyzedArguments analyzedArguments, ImmutableArray<MethodSymbol> methods, BindingDiagnosticBag diagnostics) 2121foreach (var m in methods) 2329MethodSymbol method = new ErrorMethodSymbol(methodContainer, returnType, string.Empty); 2334var originalMethods = (expr.Kind == BoundKind.MethodGroup) ? ((BoundMethodGroup)expr).Methods : ImmutableArray<MethodSymbol>.Empty; 2574BuildArgumentsForErrorRecovery(analyzedArguments, StaticCast<MethodSymbol>.From(methods), BindingDiagnosticBag.Discarded),
Binder\Binder_Lookup.cs (7)
207bool isExtensionMethod = candidate is MethodSymbol { IsExtensionMethod: true }; 779ArrayBuilder<MethodSymbol> methods, 1448else if ((options & LookupOptions.MustBeOperator) != 0 && unwrappedSymbol is not MethodSymbol { MethodKind: MethodKind.UserDefinedOperator }) 1594MethodSymbol method1; 1595MethodSymbol method2; 1845MethodSymbol method = (MethodSymbol)symbol;
Binder\Binder_Operators.cs (76)
156ImmutableArray<MethodSymbol> originalUserDefinedOperators; 172ImmutableArray<MethodSymbol> staticExtensionOriginalUserDefinedOperators; 327ImmutableArray<MethodSymbol> originalUserDefinedOperators, 393ArrayBuilder<MethodSymbol>? methods = LookupUserDefinedInstanceOperators( 426ArrayBuilder<MethodSymbol> methods, 432var overloadResolutionResult = OverloadResolutionResult<MethodSymbol>.GetInstance(); 474var method = overloadResolutionResult.ValidResult.Member; 523originalUserDefinedOperatorsOpt: ImmutableArray<MethodSymbol>.Empty, 530ImmutableArray<MethodSymbol> methodsArray = methods.ToImmutableAndFree(); 584out ImmutableArray<MethodSymbol> staticOriginalUserDefinedOperators) 664ArrayBuilder<MethodSymbol>? methods = LookupUserDefinedInstanceExtensionOperatorsInSingleScope( 716MethodSymbol method = isAddition ? eventSymbol.AddMethod : eventSymbol.RemoveMethod; 821MethodSymbol userDefinedOperator = null; 1009ImmutableArray<MethodSymbol> originalUserDefinedOperators; 1136out ImmutableArray<MethodSymbol> originalUserDefinedOperators, out BinaryOperatorSignature resultSignature, out BinaryOperatorAnalysisResult best) 1141originalUserDefinedOperators = default(ImmutableArray<MethodSymbol>); 1160ref ImmutableArray<MethodSymbol> originalUserDefinedOperators, 1221ImmutableArray<MethodSymbol> extensionOriginalUserDefinedOperators; 1469ImmutableArray<MethodSymbol> originalUserDefinedOperators; 1475originalUserDefinedOperators = default(ImmutableArray<MethodSymbol>); 1588private bool IsValidDynamicCondition(BoundExpression left, bool isNegative, BindingDiagnosticBag diagnostics, out MethodSymbol userDefinedOperator) 1764MethodSymbol definition; 2037out ImmutableArray<MethodSymbol> originalUserDefinedOperators) 2055out ImmutableArray<MethodSymbol> originalUserDefinedOperators) 2069ImmutableArray<MethodSymbol> extensionOriginalUserDefinedOperators; 2096out ImmutableArray<MethodSymbol> originalUserDefinedOperators) 2156out ImmutableArray<MethodSymbol> originalUserDefinedOperators) 2176private static BinaryOperatorAnalysisResult BinaryOperatorAnalyzeOverloadResolutionResult(BinaryOperatorOverloadResolutionResult result, out LookupResultKind resultKind, out ImmutableArray<MethodSymbol> originalUserDefinedOperators) 2182var builder = ArrayBuilder<MethodSymbol>.GetInstance(); 2185MethodSymbol method = analysisResult.Signature.Method; 2208originalUserDefinedOperators = ImmutableArray<MethodSymbol>.Empty; 2215private void ReportOperatorUseSiteDiagnostics(MethodSymbol operatorMethod, SyntaxNode node, BindingDiagnosticBag diagnostics) 2260out ImmutableArray<MethodSymbol> originalUserDefinedOperators) 2277ImmutableArray<MethodSymbol> extensionOriginalUserDefinedOperators; 2302out ImmutableArray<MethodSymbol> originalUserDefinedOperators) 2330out ImmutableArray<MethodSymbol> originalUserDefinedOperators) 2336var builder = ArrayBuilder<MethodSymbol>.GetInstance(); 2339MethodSymbol method = analysisResult.Signature.Method; 2378originalUserDefinedOperators = ImmutableArray<MethodSymbol>.Empty; 2408out ImmutableArray<MethodSymbol> originalUserDefinedOperators) 3313originalUserDefinedOperatorsOpt: default(ImmutableArray<MethodSymbol>), 3339ImmutableArray<MethodSymbol> originalUserDefinedOperators; 3353ImmutableArray<MethodSymbol> staticExtensionOriginalUserDefinedOperators; 3503ArrayBuilder<MethodSymbol>? methods = LookupUserDefinedInstanceOperators( 3535ArrayBuilder<MethodSymbol> methods, 3544var overloadResolutionResult = OverloadResolutionResult<MethodSymbol>.GetInstance(); 3582var method = overloadResolutionResult.ValidResult.Member; 3627ImmutableArray<MethodSymbol>.Empty, 3634ImmutableArray<MethodSymbol> methodsArray = methods.ToImmutableAndFree(); 3691out ImmutableArray<MethodSymbol> staticOriginalUserDefinedOperators) 3777ArrayBuilder<MethodSymbol>? methods = LookupUserDefinedInstanceExtensionOperatorsInSingleScope( 3793private ArrayBuilder<MethodSymbol>? LookupUserDefinedInstanceOperators(TypeSymbol lookupInType, string? checkedName, string ordinaryName, int parameterCount, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 3798ArrayBuilder<MethodSymbol>? methods = null; 3806methods = ArrayBuilder<MethodSymbol>.GetInstance(lookupResult.Symbols.Count); 3819methods = ArrayBuilder<MethodSymbol>.GetInstance(lookupResult.Symbols.Count); 3824var existing = new HashSet<MethodSymbol>(PairedOperatorComparer.Instance); 3826foreach (var method in methods) 3831foreach (MethodSymbol method in lookupResult.Symbols) 3845static void appendViableMethods(LookupResult lookupResult, int parameterCount, ArrayBuilder<MethodSymbol> methods) 3847foreach (MethodSymbol method in lookupResult.Symbols) 3857private static bool IsViableInstanceOperator(MethodSymbol method, int parameterCount) 3864private ArrayBuilder<MethodSymbol>? LookupUserDefinedInstanceExtensionOperatorsInSingleScope( 3871ArrayBuilder<MethodSymbol>? checkedMethods = null; 3879ArrayBuilder<MethodSymbol>? ordinaryMethods = null; 3890var existing = new HashSet<MethodSymbol>(OverloadResolution.PairedExtensionOperatorSignatureComparer.Instance); 3893foreach (MethodSymbol method in ordinaryMethods) 3911ref ArrayBuilder<MethodSymbol>? methods) 3918var typeOperators = ArrayBuilder<MethodSymbol>.GetInstance(); 3921foreach (MethodSymbol op in typeOperators) 3943methods ??= ArrayBuilder<MethodSymbol>.GetInstance(); 3952private class PairedOperatorComparer : IEqualityComparer<MethodSymbol> 3958public bool Equals(MethodSymbol x, MethodSymbol y) 3971public int GetHashCode([DisallowNull] MethodSymbol method) 3992private bool CheckConstraintLanguageVersionAndRuntimeSupportForOperator(SyntaxNode node, MethodSymbol? methodOpt, bool isUnsignedRightShift, TypeSymbol? constrainedToTypeOpt, BindingDiagnosticBag diagnostics) 4391ImmutableArray<MethodSymbol> originalUserDefinedOperators;
Binder\Binder_Patterns.cs (24)
223internal static MethodSymbol? GetUnionTypeTryGetValueMethod(ConversionsBase conversions, NamedTypeSymbol inputUnionType, TypeSymbol type) 227MethodSymbol? bestMatch = null; 279ref MethodSymbol? bestMatch, 288if (m is MethodSymbol candidate && HasTryGetValueSignature(candidate)) 299MethodSymbol declaredMethod = candidate; 362internal static bool HasTryGetValueSignature(MethodSymbol method) 375internal static bool IsUnionTypeTryGetValueMethod(NamedTypeSymbol unionType, MethodSymbol method) 414static bool isMatch(MethodSymbol method, NamedTypeSymbol unionDefinition) 1589MethodSymbol? deconstructMethod = null; 1620ShouldUseITupleForRecursivePattern(node, declType, diagnostics, out var iTupleType, out var iTupleGetLength, out var iTupleGetItem)) 1666private MethodSymbol? BindDeconstructSubpatterns( 1676var deconstructMethod = deconstruct.ExpressionSymbol as MethodSymbol; 1812[NotNullWhen(true)] out MethodSymbol? iTupleGetLength, 1813[NotNullWhen(true)] out MethodSymbol? iTupleGetItem) 1850[NotNullWhen(true)] out MethodSymbol? iTupleGetLength, 1851[NotNullWhen(true)] out MethodSymbol? iTupleGetItem) 1881iTupleGetLength = (MethodSymbol?)Compilation.GetWellKnownTypeMember(WellKnownMember.System_Runtime_CompilerServices_ITuple__get_Length); 1882iTupleGetItem = (MethodSymbol?)Compilation.GetWellKnownTypeMember(WellKnownMember.System_Runtime_CompilerServices_ITuple__get_Item); 2013MethodSymbol? deconstructMethod = null; 2038ShouldUseITuple(node, strippedInputType, diagnostics, out var iTupleType, out var iTupleGetLength, out var iTupleGetItem)) 2052deconstructMethod = deconstruct.ExpressionSymbol as MethodSymbol;
Binder\Binder_Statements.cs (39)
219var method = (MethodSymbol)this.ContainingMemberOrLambda; 482new SourceLabelSymbol((MethodSymbol)ContainingMemberOrLambda, node.Identifier); 639private bool ImplicitReturnIsOkay(MethodSymbol method) 755/// Checks for a Dispose method on <paramref name="expr"/> and returns its <see cref="MethodSymbol"/> if found. 760/// <returns>The <see cref="MethodSymbol"/> of the Dispose method if one is found, otherwise null.</returns> 761internal MethodSymbol TryFindDisposePatternMethod(BoundExpression expr, SyntaxNode syntaxNode, bool hasAwait, BindingDiagnosticBag diagnostics, out bool isExpanded) 771out var disposeMethod, 1248MethodSymbol fixedPatternMethod = null; 1325private MethodSymbol GetFixedPatternMethodOpt(BoundExpression initializer, BindingDiagnosticBag additionalDiagnostics) 1334var result = PerformPatternMethodLookup(initializer, methodName, initializer.Syntax, additionalDiagnostics, out var patternMethodSymbol, out bool isExpanded); 1362MethodSymbol patternMethodOpt, 1839return (member as MethodSymbol)?.MethodKind == (isStatic ? 1944ImmutableArray<MethodSymbol>.CastUp(GetDeclaredLocalFunctionsForScope(node)), 2316ImmutableArray<MethodSymbol> originalUserDefinedConversions = conversion.OriginalUserDefinedOrUnionConversions; 2754var best = this.UnaryOperatorOverloadResolution(UnaryOperatorKind.True, expr, node, diagnostics, ref discardedOperatorResolutionForReporting, out LookupResultKind resultKind, out ImmutableArray<MethodSymbol> originalUserDefinedOperators); 2981protected static bool IsInAsyncMethod(MethodSymbol method) 2988return IsInAsyncMethod(this.ContainingMemberOrLambda as MethodSymbol); 2994return symbol?.Kind == SymbolKind.Method && ((MethodSymbol)symbol).IsAsyncEffectivelyReturningTask(this.Compilation); 3000return symbol?.Kind == SymbolKind.Method && ((MethodSymbol)symbol).IsAsyncEffectivelyReturningGenericTask(this.Compilation); 3008var method = (MethodSymbol)symbol; 3017var symbol = this.ContainingMemberOrLambda as MethodSymbol; 3590var inferringLambda = this.ContainingMemberOrLambda is MethodSymbol method && (object)method.ReturnType == LambdaSymbol.ReturnTypeIsBeingInferred; 3773BoundExpression initializerInvocation = GetBinder(initializer).BindConstructorInitializer(initializer.ArgumentList, (MethodSymbol)this.ContainingMember(), diagnostics); 3792isInstanceConstructor(out MethodSymbol constructorSymbol)) 3837bool isInstanceConstructor(out MethodSymbol constructorSymbol) 3839if (this.ContainingMember() is MethodSymbol { IsStatic: false } method) 3851BoundExpression initializerInvocation = GetBinder(initializer).BindConstructorInitializer(initializer.ArgumentList, (MethodSymbol)this.ContainingMember(), diagnostics); 3863initializerInvocation = BindImplicitConstructorInitializer((MethodSymbol)this.ContainingMember(), diagnostics, Compilation); 3871var constructorInitializer = new BoundExpressionStatement(ctorSyntax, initializerInvocation) { WasCompilerGenerated = ((MethodSymbol)ContainingMember()).IsImplicitlyDeclared }; 3884MethodSymbol constructor, BindingDiagnosticBag diagnostics, CSharpCompilation compilation) 3991internal static BoundCall? GenerateBaseParameterlessConstructorInitializer(MethodSymbol constructor, BindingDiagnosticBag diagnostics) 3994MethodSymbol? baseConstructor = null; 3998foreach (MethodSymbol ctor in baseType.InstanceConstructors) 4060MethodSymbol? baseConstructor = SynthesizedRecordCopyCtor.FindCopyConstructor(baseType, containingType, ref useSiteInfo); 4178SyntaxNode syntaxNode, BindingDiagnosticBag diagnostics, out MethodSymbol result, out bool isExpanded) 4242var patternMethodSymbol = call.Method;
Binder\Binder_Symbols.cs (3)
1592if (symbol is MethodSymbol { IsExtensionMethod: true } extensionMethod) 1628private static readonly Func<Symbol, MethodSymbol> s_toMethodSymbolFunc = s => (MethodSymbol)s;
Binder\Binder_TupleOperators.cs (1)
160ImmutableArray<MethodSymbol> originalUserDefinedOperators;
Binder\Binder_Unsafe.cs (2)
52case MethodSymbol methodSymbol: 91foreach (var ctor in typeArgument.InstanceConstructors)
Binder\Binder_WithExpression.cs (1)
29MethodSymbol? cloneMethod = null;
Binder\BinderFactory.BinderFactoryVisitor.cs (6)
282MethodSymbol accessor = null; 347MethodSymbol method = GetMethodSymbol(parent, resultBinder); 418var accessor = propertySymbol.GetMethod; 1249MethodSymbol method = GetMethodSymbol(baseMethodDeclSyntax, outerBinder); 1322MethodSymbol invokeMethod = delegateType.DelegateInvokeMethod; 1369MethodSymbol method = GetMethodSymbol(methodDeclSyntax, outerBinder);
Binder\DecisionDagBuilder.cs (2)
787if (Binder.GetUnionTypeTryGetValueMethod(_conversions, (NamedTypeSymbol)inputInfo.DagTemp.Type, type) is MethodSymbol tryGetValue) 942MethodSymbol method = recursive.DeconstructMethod;
Binder\EmbeddedStatementBinder.cs (2)
56var containingMethod = (MethodSymbol)this.ContainingMemberOrLambda;
Binder\ExecutableCodeBinder.cs (1)
103public static void ValidateIteratorMethod(CSharpCompilation compilation, MethodSymbol iterator, BindingDiagnosticBag diagnostics)
Binder\ForEachEnumeratorInfo.cs (7)
29public readonly MethodSymbol CurrentPropertyGetter; 62MethodSymbol currentPropertyGetter, 113public MethodSymbol CurrentPropertyGetter; 157var getEnumeratorMethod = this.GetEnumeratorInfo?.Method; 159var moveNextMethod = this.MoveNextInfo?.Method; 161var currentPropertyGetter = this.CurrentPropertyGetter; 166LocalRewriter.TryGetDisposeMethod(binder.Compilation, syntax, this.IsAsync, BindingDiagnosticBag.Discarded, out var disposeMethod))
Binder\ForEachLoopBinder.cs (35)
89(MethodSymbol)this.ContainingMemberOrLambda, 234MethodSymbol getEnumeratorMethod = builder.GetEnumeratorInfo?.Method; 497ImmutableArray<MethodSymbol> originalUserDefinedConversions = elementConversionClassification.OriginalUserDefinedOrUnionConversions; 731MethodSymbol nullableValueGetter = (MethodSymbol)GetSpecialTypeMember(SpecialMember.System_Nullable_T_get_Value, diagnostics, exprSyntax); 1064MethodSymbol getEnumeratorMethod = builder.GetEnumeratorInfo.Method; 1102MethodSymbol getEnumeratorMethod; 1107getEnumeratorMethod = (MethodSymbol)GetWellKnownTypeMember(Compilation, WellKnownMember.System_Collections_Generic_IAsyncEnumerable_T__GetAsyncEnumerator, 1123getEnumeratorMethod = (MethodSymbol)GetSpecialTypeMember(SpecialMember.System_Collections_Generic_IEnumerable_T__GetEnumerator, diagnostics, errorLocationSyntax); 1126MethodSymbol moveNextMethod = null; 1129MethodSymbol specificGetEnumeratorMethod = getEnumeratorMethod.AsMember(collectionType); 1140MethodSymbol currentPropertyGetter; 1145MethodSymbol moveNextAsync = (MethodSymbol)GetWellKnownTypeMember(WellKnownMember.System_Collections_Generic_IAsyncEnumerator_T__MoveNextAsync, 1153currentPropertyGetter = (MethodSymbol)GetWellKnownTypeMember(Compilation, WellKnownMember.System_Collections_Generic_IAsyncEnumerator_T__get_Current, diagnostics, errorLocationSyntax.Location, isOptional: false); 1157currentPropertyGetter = (MethodSymbol)GetSpecialTypeMember(SpecialMember.System_Collections_Generic_IEnumerator_T__get_Current, diagnostics, errorLocationSyntax); 1169moveNextMethod = (MethodSymbol)GetSpecialTypeMember(SpecialMember.System_Collections_IEnumerator__MoveNext, diagnostics, errorLocationSyntax); 1184builder.CurrentPropertyGetter = (MethodSymbol)GetSpecialTypeMember(SpecialMember.System_Collections_IEnumerator__get_Current, diagnostics, errorLocationSyntax); 1210MethodSymbol patternDisposeMethod = TryFindDisposePatternMethod(receiver, syntax, isAsync, patternDiagnostics, out bool expanded); 1321builder.CurrentPropertyGetter = (MethodSymbol)GetSpecialTypeMember(SpecialMember.System_Collections_IEnumerator__get_Current, diagnostics, syntax); 1398ArrayBuilder<MethodSymbol> candidateMethods = ArrayBuilder<MethodSymbol>.GetInstance(); 1413MethodSymbol method = (MethodSymbol)member; 1424candidateMethods.Add((MethodSymbol)member); 1439private MethodArgumentInfo PerformForEachPatternOverloadResolution(SyntaxNode syntax, SyntaxNode collectionSyntax, TypeSymbol patternType, ArrayBuilder<MethodSymbol> candidateMethods, bool warningsOnly, BindingDiagnosticBag diagnostics, bool isAsync) 1443var overloadResolutionResult = OverloadResolutionResult<MethodSymbol>.GetInstance(); 1458MethodSymbol result = null; 1543var result = overloadResolutionResult.ValidResult.Member; 1645MethodSymbol getEnumeratorMethod = builder.GetEnumeratorInfo.Method; 1704MethodSymbol currentPropertyGetterCandidate = ((PropertySymbol)lookupSymbol).GetOwnOrInheritedGetMethod(); 1747private bool IsInvalidMoveNextMethod(MethodSymbol moveNextMethodCandidate, bool isAsync) 1948var resolvedMember = (MethodSymbol)GetSpecialTypeMember(member, diagnostics, syntax); 1956private MethodArgumentInfo BindDefaultArguments(MethodSymbol method, BoundExpression extensionReceiverOpt, bool expanded, SyntaxNode syntax, BindingDiagnosticBag diagnostics)
Binder\InMethodBinder.cs (5)
26private readonly MethodSymbol _methodSymbol; 31/// This map is used by <see cref="MethodCompiler.BindMethodBody(MethodSymbol, TypeCompilationState, BindingDiagnosticBag, bool, BoundNode?, bool, out ImportChain?, out bool, out bool, out MethodBodySemanticModel.InitialState)"/> 41public InMethodBinder(MethodSymbol owner, Binder enclosing) 273if (((MethodSymbol)newSymbol).MethodKind == MethodKind.LocalFunction) 309if (((MethodSymbol)newSymbol).MethodKind == MethodKind.LocalFunction)
Binder\LocalBinderFactory.cs (4)
296=> target.Kind == SymbolKind.Method ? new WithMethodTypeParametersBinder((MethodSymbol)target, enclosing) : null; 311MethodSymbol methodSymbol => methodSymbol.Parameters, 328case MethodSymbol method: 342case MethodSymbol method:
Binder\LocalScopeBinder.cs (3)
355var containingMethod = (MethodSymbol)this.ContainingMemberOrLambda; 362internal static void BuildLabels(MethodSymbol containingMethod, StatementSyntax statement, ref ArrayBuilder<LabelSymbol> labels)
Binder\LockBinder.cs (7)
14using LockTypeInfo = (MethodSymbol EnterScopeMethod, TypeSymbol ScopeType, MethodSymbol ScopeDisposeMethod); 83var enterScopeMethod = TryFindPublicVoidParameterlessMethod(lockType, WellKnownMemberNames.EnterScopeMethodName); 98var disposeMethod = TryFindPublicVoidParameterlessMethod(scopeType, WellKnownMemberNames.DisposeMethodName); 114private static MethodSymbol? TryFindPublicVoidParameterlessMethod(TypeSymbol type, string name) 117MethodSymbol? result = null; 120if (member is MethodSymbol
Binder\MethodArgumentInfo.cs (3)
17public readonly MethodSymbol Method; 23MethodSymbol method, 34public static MethodArgumentInfo CreateParameterlessMethod(MethodSymbol method)
Binder\MethodGroupResolution.cs (2)
23public readonly OverloadResolutionResult<MethodSymbol> OverloadResolutionResult; 41OverloadResolutionResult<MethodSymbol> overloadResolutionResult,
Binder\ParamsCollectionTypeInProgressBinder.cs (3)
16private readonly MethodSymbol? _constructorInProgress; 22MethodSymbol? constructorInProgress = null) 34internal override MethodSymbol? ParamsCollectionConstructorInProgress => _constructorInProgress;
Binder\PatternExplainer.cs (1)
657var method = e.DeconstructMethod;
Binder\RefSafetyAnalysis.cs (5)
19internal static void Analyze(CSharpCompilation compilation, MethodSymbol symbol, BoundNode node, BindingDiagnosticBag diagnostics) 60private readonly MethodSymbol _symbol; 76MethodSymbol symbol, 381var lambda = node.Symbol; 684static ParameterSymbol? tryGetReceiverParameter(MethodSymbol method)
Binder\Semantics\AccessCheck.cs (1)
196case SymbolKind.Method when ((MethodSymbol)symbol).MethodKind == MethodKind.LocalFunction:
Binder\Semantics\Conversions\Conversion.cs (12)
43MethodSymbol? conversionMethod) 55internal readonly MethodSymbol? _conversionMethod; 112MethodSymbol? constructor, bool constructorUsedInExpandedForm, 126internal readonly MethodSymbol? Constructor; 132MethodSymbol? constructor, bool constructorUsedInExpandedForm, 185internal Conversion(ConversionKind kind, MethodSymbol conversionMethod, bool isExtensionMethod) 216internal Conversion SetConversionMethod(MethodSymbol conversionMethod) 517internal MethodSymbol? Method 585internal CollectionExpressionTypeKind GetCollectionExpressionTypeKind(out TypeSymbol? elementType, out MethodSymbol? constructor, out bool isExpanded) 1156internal ImmutableArray<MethodSymbol> OriginalUserDefinedOrUnionConversions 1168var builder = ArrayBuilder<MethodSymbol>.GetInstance(); 1176return ImmutableArray<MethodSymbol>.Empty;
Binder\Semantics\Conversions\Conversions.cs (9)
188MethodSymbol? constructor = null; 264private static MethodGroupResolution ResolveDelegateOrFunctionPointerMethodGroup(Binder binder, BoundMethodGroup source, MethodSymbol delegateInvokeMethodOpt, bool isFunctionPointer, in CallingConventionInfo callingConventionInfo, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 291private static (MethodSymbol, bool isFunctionPointer, CallingConventionInfo callingConventionInfo) GetDelegateInvokeOrFunctionPointerMethodIfAvailable(TypeSymbol type) 304MethodSymbol methodSymbol = delegateType.DelegateInvokeMethod; 342var method = result.BestResult.Member; 411var result = OverloadResolutionResult<MethodSymbol>.GetInstance(); 412var delegateInvokeMethod = delegateType.DelegateInvokeMethod; 459private static Conversion ToConversion(OverloadResolutionResult<MethodSymbol> result, MethodGroup methodGroup, int parameterCount) 482MethodSymbol method = result.BestResult.Member;
Binder\Semantics\Conversions\ConversionsBase.cs (1)
1493var invokeMethod = delegateType.DelegateInvokeMethod;
Binder\Semantics\Conversions\UserDefinedConversionAnalysis.cs (4)
24public readonly MethodSymbol Operator; 32MethodSymbol op, 50MethodSymbol op, 69MethodSymbol op,
Binder\Semantics\Conversions\UserDefinedExplicitConversions.cs (4)
220var operators = ArrayBuilder<MethodSymbol>.GetInstance(); 236var operators2 = ArrayBuilder<MethodSymbol>.GetInstance(); 239foreach (MethodSymbol op2 in operators2) 263foreach (MethodSymbol op in operators)
Binder\Semantics\Conversions\UserDefinedImplicitConversions.cs (2)
289var operators = ArrayBuilder<MethodSymbol>.GetInstance(); 292foreach (MethodSymbol op in operators)
Binder\Semantics\Operators\BinaryOperatorAnalysisResult.cs (4)
15internal readonly struct BinaryOperatorAnalysisResult : IMemberResolutionResultWithPriority<MethodSymbol> 40bool IMemberResolutionResultWithPriority<MethodSymbol>.IsApplicable => IsValid; 41MethodSymbol IMemberResolutionResultWithPriority<MethodSymbol>.MemberWithPriority => Signature.Method;
Binder\Semantics\Operators\BinaryOperatorOverloadResolution.cs (9)
991var typeOperators = ArrayBuilder<MethodSymbol>.GetInstance(); 997private static void GetDeclaredUserDefinedBinaryOperators(TypeSymbol? constrainedToTypeOpt, ArrayBuilder<MethodSymbol> typeOperators, BinaryOperatorKind kind, string name, ArrayBuilder<BinaryOperatorSignature> operators) 999foreach (MethodSymbol op in typeOperators) 1024MethodSymbol op = operators[i].Method; 1117RemoveLowerPriorityMembers<BinaryOperatorAnalysisResult, MethodSymbol>(candidates); 1480var existing = new HashSet<MethodSymbol>(PairedExtensionOperatorSignatureComparer.Instance); 1506var typeOperators = ArrayBuilder<MethodSymbol>.GetInstance(); 1517MethodSymbol method = candidate.Method; 1605var method = candidate.Method.OriginalDefinition;
Binder\Semantics\Operators\BinaryOperatorSignature.cs (2)
21public readonly MethodSymbol Method; 43public BinaryOperatorSignature(BinaryOperatorKind kind, TypeSymbol leftType, TypeSymbol rightType, TypeSymbol returnType, MethodSymbol method, TypeSymbol constrainedToTypeOpt)
Binder\Semantics\Operators\UnaryOperatorAnalysisResult.cs (4)
13internal readonly struct UnaryOperatorAnalysisResult : IMemberResolutionResultWithPriority<MethodSymbol> 36bool IMemberResolutionResultWithPriority<MethodSymbol>.IsApplicable => IsValid; 37MethodSymbol IMemberResolutionResultWithPriority<MethodSymbol>.MemberWithPriority => Signature.Method;
Binder\Semantics\Operators\UnaryOperatorOverloadResolution.cs (12)
121var existing = new HashSet<MethodSymbol>(PairedExtensionOperatorSignatureComparer.Instance); 147var typeOperators = ArrayBuilder<MethodSymbol>.GetInstance(); 158MethodSymbol method = candidate.Method; 242internal class PairedExtensionOperatorSignatureComparer : IEqualityComparer<MethodSymbol> 248public bool Equals(MethodSymbol? x, MethodSymbol? y) 284public int GetHashCode(MethodSymbol op) 322RemoveLowerPriorityMembers<UnaryOperatorAnalysisResult, MethodSymbol>(candidates); 811var typeOperators = ArrayBuilder<MethodSymbol>.GetInstance(); 817private static void GetDeclaredUserDefinedUnaryOperators(TypeSymbol? constrainedToTypeOpt, IEnumerable<MethodSymbol> typeOperators, UnaryOperatorKind kind, string name, ArrayBuilder<UnaryOperatorSignature> operators) 819foreach (MethodSymbol op in typeOperators) 858MethodSymbol op = operators[i].Method;
Binder\Semantics\Operators\UnaryOperatorSignature.cs (2)
17public readonly MethodSymbol Method; 32public UnaryOperatorSignature(UnaryOperatorKind kind, TypeSymbol operandType, TypeSymbol returnType, MethodSymbol method, TypeSymbol constrainedToTypeOpt)
Binder\Semantics\OverloadResolution\MethodGroup.cs (5)
18internal ArrayBuilder<MethodSymbol> Methods { get; } 26this.Methods = new ArrayBuilder<MethodSymbol>(); 32MethodSymbol method, 52if (member is MethodSymbol method) 67ImmutableArray<MethodSymbol> methods,
Binder\Semantics\OverloadResolution\MethodTypeInference.cs (7)
99internal abstract TypeWithAnnotations GetMethodGroupResultType(BoundMethodGroup group, MethodSymbol method); 108internal override TypeWithAnnotations GetMethodGroupResultType(BoundMethodGroup group, MethodSymbol method) 1085MethodSymbol method = delegateOrFunctionPointerType switch 1624var delegateInvokeMethod = target.Type.GetDelegateType()?.DelegateInvokeMethod(); 3243MethodSymbol method, 3258MethodSymbol method, 3276var constructedFromMethod = method.ConstructedFrom;
Binder\Semantics\OverloadResolution\OverloadResolution.cs (39)
101public void ObjectCreationOverloadResolution(ImmutableArray<MethodSymbol> constructors, AnalyzedArguments arguments, OverloadResolutionResult<MethodSymbol> result, bool dynamicResolution, bool isEarlyAttributeBinding, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 138ArrayBuilder<MethodSymbol> methods, 142OverloadResolutionResult<MethodSymbol> result, 226internal bool FilterMethodsForUniqueSignature(ArrayBuilder<MethodSymbol> methods, out bool useParams) 235var result = OverloadResolutionResult<MethodSymbol>.GetInstance(); 249unreducedMethods = ArrayBuilder<MethodSymbol>.GetInstance(methods.Count); 250foreach (var method in methods) 295var applicableMethods = ArrayBuilder<MethodSymbol>.GetInstance(methods.Count); 544case MethodSymbol method: 616if (member is MethodSymbol { IsExtensionMethod: true }) 667if (typeof(TMember) != typeof(MethodSymbol)) 688var member = (MethodSymbol)(Symbol)result.Member; 808if (member is MethodSymbol method) 860Debug.Assert(typeof(TMember) == typeof(MethodSymbol)); 870var method = (MethodSymbol)(Symbol)result.Member; 932private void AddConstructorToCandidateSet(MethodSymbol constructor, ArrayBuilder<MemberResolutionResult<MethodSymbol>> results, 941results.Add(new MemberResolutionResult<MethodSymbol>(constructor, constructor, MemberAnalysisResult.UnsupportedMetadata(), hasTypeArgumentInferredFromFunctionType: false)); 963results.Add(new MemberResolutionResult<MethodSymbol>(constructor, constructor, result, hasTypeArgumentInferredFromFunctionType: false)); 968MethodSymbol constructor, 1011MethodSymbol constructor, 1471return ((MethodSymbol)member).HidesBaseMethodsByName; 1747ArrayBuilder<MemberResolutionResult<MethodSymbol>> results, 1748ImmutableArray<MethodSymbol> constructors, 1761foreach (MethodSymbol constructor in constructors) 1777RemoveLowerPriorityMembers<MemberResolutionResult<MethodSymbol>, MethodSymbol>(results); 3290MethodSymbol invoke; 3577MethodSymbol invoke1 = d1.DelegateInvokeMethod; 3578MethodSymbol invoke2 = d2.DelegateInvokeMethod; 3705MethodSymbol invoke1 = d1.DelegateInvokeMethod; 3706MethodSymbol invoke2 = d2.DelegateInvokeMethod; 4397if (member is MethodSymbol method) 4472(MethodSymbol)(Symbol)member, 4594Debug.Assert(candidate is MethodSymbol { MethodKind: MethodKind.UserDefinedOperator }); 4790return (TMember)(Symbol)(member as MethodSymbol).ConstructedFrom;
Binder\Semantics\OverloadResolution\OverloadResolutionResult.cs (8)
535Debug.Assert(firstSupported.Member is MethodSymbol { MethodKind: MethodKind.Constructor }); 544Debug.Assert(firstSupported.Member is MethodSymbol { Name: "Add" }); 618private static void ReportWrongCallingConvention(Location location, BindingDiagnosticBag diagnostics, ImmutableArray<Symbol> symbols, MemberResolutionResult<TMember> firstSupported, MethodSymbol target) 733var method = (MethodSymbol)(Symbol)mismatch.Member; 939Debug.Assert(((MethodSymbol)(object)badMember).IsVararg); 1084MethodSymbol method = (MethodSymbol)(Symbol)result.Member;
Binder\SwitchBinder.cs (1)
237labels.Add(new SourceLabelSymbol((MethodSymbol)this.ContainingMemberOrLambda, labelSyntax, boundLabelConstantOpt));
Binder\SwitchBinder_Patterns.cs (1)
70innerLocalFunctions: ImmutableArray<MethodSymbol>.CastUp(functions),
Binder\UsingStatementBinder.cs (1)
200MethodSymbol disposeMethod = originalBinder.TryFindDisposePatternMethod(receiver, syntax, hasAwait, patternDiagnostics, out bool expanded);
Binder\WithMethodTypeParametersBinder.cs (2)
19private readonly MethodSymbol _methodSymbol; 22internal WithMethodTypeParametersBinder(MethodSymbol methodSymbol, Binder next)
Binder\WithPrimaryConstructorParametersBinder.cs (1)
18private MethodSymbol? _lazyPrimaryCtorWithParameters = ErrorMethodSymbol.UnknownMethod;
Binder\WithUsingNamespacesAndTypesBinder.cs (1)
159if (!symbol.IsStatic || ((MethodSymbol)symbol).IsExtensionMethod)
BoundTree\BoundBinaryOperator.UncommonData.cs (7)
50public static UncommonData? CreateIfNeeded(ConstantValue? constantValue, MethodSymbol? method, TypeSymbol? constrainedToType, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt) 61public readonly MethodSymbol? Method; 69public readonly ImmutableArray<MethodSymbol> OriginalUserDefinedOperatorsOpt; 71private UncommonData(ConstantValue? constantValue, MethodSymbol? method, TypeSymbol? constrainedToType, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, bool isUnconvertedInterpolatedStringAddition, InterpolatedStringHandlerData? interpolatedStringHandlerData) 84public UncommonData WithUpdatedMethod(MethodSymbol? method)
BoundTree\BoundDagEvaluation.cs (2)
320MethodSymbol method = DeconstructMethod; 336MethodSymbol method = DeconstructMethod;
BoundTree\BoundDynamicObjectCreationExpression.cs (1)
12public override MethodSymbol? Constructor => null;
BoundTree\BoundExpression.cs (6)
418public MethodSymbol? BinaryOperatorMethod => OperatorKind.IsDynamic() ? null : Data?.Method; 419public MethodSymbol? LeftTruthOperatorMethod => OperatorKind.IsDynamic() && OperatorKind.IsLogical() ? Data?.Method : null; 427internal ImmutableArray<MethodSymbol> OriginalUserDefinedOperatorsOpt => Data?.OriginalUserDefinedOperatorsOpt ?? default(ImmutableArray<MethodSymbol>); 481public MethodSymbol? SymbolOpt 555MethodSymbol constructor,
BoundTree\BoundMethodGroup.cs (1)
18ImmutableArray<MethodSymbol> methods,
BoundTree\BoundNewT.cs (1)
12public override MethodSymbol? Constructor => null;
BoundTree\BoundNodeExtensions.cs (1)
60MethodSymbol method = call!.Method;
BoundTree\BoundNoPiaObjectCreationExpression.cs (1)
12public override MethodSymbol? Constructor => null;
BoundTree\BoundObjectCreationExpression.cs (6)
12public BoundObjectCreationExpression(SyntaxNode syntax, MethodSymbol constructor, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, 15: this(syntax, constructor, ImmutableArray<MethodSymbol>.Empty, arguments, argumentNamesOpt, argumentRefKindsOpt, expanded, argsToParamsOpt, defaultArguments, constantValueOpt, initializerExpressionOpt, wasTargetTyped: false, type, hasErrors) 18public BoundObjectCreationExpression Update(MethodSymbol constructor, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, 21return this.Update(constructor, ImmutableArray<MethodSymbol>.Empty, arguments, argumentNamesOpt, argumentRefKindsOpt, expanded, argsToParamsOpt, defaultArguments, constantValueOpt, initializerExpressionOpt, this.WasTargetTyped, type); 24public BoundObjectCreationExpression Update(MethodSymbol constructor, ImmutableArray<MethodSymbol> constructorsGroup, ImmutableArray<BoundExpression> arguments,
BoundTree\BoundObjectCreationExpressionBase.cs (1)
12public abstract MethodSymbol? Constructor { get; }
BoundTree\BoundTreeRewriter.cs (5)
110public virtual MethodSymbol? VisitMethodSymbol(MethodSymbol? symbol) => symbol; 143return VisitMethodSymbol((MethodSymbol)symbol); 198protected virtual ImmutableArray<MethodSymbol> VisitDeclaredLocalFunctions(ImmutableArray<MethodSymbol> localFunctions) => localFunctions;
BoundTree\Constructors.cs (21)
90MethodSymbol method, 108MethodSymbol method, 124MethodSymbol method, 130ImmutableArray<MethodSymbol> originalMethods, 170public BoundCall Update(BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, MethodSymbol method, ImmutableArray<BoundExpression> arguments) 175public static BoundCall Synthesized(SyntaxNode syntax, BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, MethodSymbol method) 180public static BoundCall Synthesized(SyntaxNode syntax, BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, MethodSymbol method, BoundExpression arg0) 185public static BoundCall Synthesized(SyntaxNode syntax, BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, MethodSymbol method, BoundExpression arg0, BoundExpression arg1) 190public static BoundCall Synthesized(SyntaxNode syntax, BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, MethodSymbol method, ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> argumentRefKindsOpt = default) 237static ImmutableArray<RefKind> getArgumentRefKinds(MethodSymbol method) 260public BoundObjectCreationExpression(SyntaxNode syntax, MethodSymbol constructor, params BoundExpression[] arguments) 264public BoundObjectCreationExpression(SyntaxNode syntax, MethodSymbol constructor, ImmutableArray<BoundExpression> arguments) 418MethodSymbol? methodOpt, 421ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, 439MethodSymbol? methodOpt, 452MethodSymbol? methodOpt, 597: this(syntax, locals, ImmutableArray<MethodSymbol>.Empty, hasUnsafeModifier: false, instrumentation: null, statements, hasErrors) 688MethodSymbol? methodOpt, 700MethodSymbol? methodOpt, 713MethodSymbol? methodOpt, 726public BoundIncrementOperator Update(UnaryOperatorKind operatorKind, BoundExpression operand, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, BoundValuePlaceholder? operandPlaceholder, BoundExpression? operandConversion, BoundValuePlaceholder? resultPlaceholder, BoundExpression? resultConversion, LookupResultKind resultKind, TypeSymbol type)
BoundTree\NullabilityRewriter.cs (1)
176ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt = GetUpdatedArray(node, node.OriginalUserDefinedOperatorsOpt);
BoundTree\TupleBinaryOperatorInfo.cs (2)
48internal readonly MethodSymbol? MethodSymbolOpt; // User-defined comparison operator, if applicable 60MethodSymbol? methodSymbolOpt,
BoundTree\UnboundLambda.cs (9)
23MethodSymbol Symbol { get; } 31MethodSymbol IBoundLambdaOrFunction.Symbol { get { return Symbol; } } 81MethodSymbol IBoundLambdaOrFunction.Symbol { get { return Symbol; } } 672private static MethodSymbol? DelegateInvokeMethod(NamedTypeSymbol? delegateType) 677private static TypeWithAnnotations DelegateReturnTypeWithAnnotations(MethodSymbol? invokeMethod, out RefKind refKind, out ImmutableArray<CustomModifier> refCustomModifiers) 822var invokeMethod = DelegateInvokeMethod(delegateType); 952var invokeMethod = DelegateInvokeMethod(delegateType); 1165MethodSymbol? invoke = DelegateInvokeMethod(delegateType); 1274var invokeMethod = DelegateInvokeMethod(delegateType);
CodeGen\CodeGenerator.cs (3)
22private readonly MethodSymbol _method; 87MethodSymbol method, 370private void EmitSymbolToken(MethodSymbol method, SyntaxNode syntaxNode, BoundArgListOperator optArgList, bool encodeAsRawDefinitionToken = false)
CodeGen\CodeGenerator_HasHome.cs (4)
75if (!IsAnyReadOnly(addressKind) && containingSymbol is MethodSymbol { ContainingSymbol: NamedTypeSymbol, IsEffectivelyReadOnly: true }) 252return containingSymbol is MethodSymbol { MethodKind: MethodKind.StaticConstructor } or FieldSymbol { IsStatic: true }; 256return (containingSymbol is MethodSymbol { MethodKind: MethodKind.Constructor } or FieldSymbol { IsStatic: false } or MethodSymbol { IsInitOnly: true }) &&
CodeGen\EmitArrayInitializer.cs (8)
462var rosPointerCtor = (MethodSymbol?)Binder.GetWellKnownTypeMember(_module.Compilation, WellKnownMember.System_ReadOnlySpan_T__ctor_Pointer, _diagnostics, syntax: wrappedExpression.Syntax, isOptional: true); 608MethodSymbol? createSpan = (MethodSymbol?)Binder.GetWellKnownTypeMember(_module.Compilation, WellKnownMember.System_Runtime_CompilerServices_RuntimeHelpers__CreateSpanRuntimeFieldHandle, _diagnostics, syntax: wrappedExpression.Syntax, isOptional: true); 632if (!tryGetReadOnlySpanArrayCtor(wrappedExpression.Syntax, out var rosArrayCtor)) 696if (!tryGetReadOnlySpanArrayCtor(arrayCreation.Syntax, out var rosArrayCtor)) 775bool tryGetReadOnlySpanArrayCtor(SyntaxNode syntax, [NotNullWhen(true)] out MethodSymbol? rosArrayCtor) 777rosArrayCtor = (MethodSymbol?)Binder.GetWellKnownTypeMember(_module.Compilation, WellKnownMember.System_ReadOnlySpan_T__ctor_Array, _diagnostics, syntax: syntax, isOptional: true);
CodeGen\EmitConversion.cs (5)
342private void EmitDelegateCreation(BoundExpression node, BoundExpression receiver, bool isExtensionMethod, MethodSymbol method, TypeSymbol delegateType, bool used) 404var ctor = DelegateConstructor(node.Syntax, delegateType); 408private MethodSymbol DelegateConstructor(SyntaxNode syntax, TypeSymbol delegateType) 412var m = possibleCtor as MethodSymbol;
CodeGen\EmitExpression.cs (25)
519var hasValueOpt = expression.HasValueMethodOpt; 693var getTypeMethod = expression.GetTypeFromHandle; 812var meth = expression.MethodOpt ?? receiver.Type.DelegateInvokeMethod(); 1648var method = call.Method; 1668var method = call.Method; 1852var method = call.Method; 1973var method = call.Method; 1981MethodSymbol actualMethodTargetedByTheCall = method; 2214private bool IsReadOnlyCall(MethodSymbol method, NamedTypeSymbol methodContainingType) 2225var originalMethod = method.OriginalDefinition; 2267private static int GetCallStackBehavior(MethodSymbol method, ImmutableArray<BoundExpression> arguments) 2329internal static bool MayUseCallForStructMethod(MethodSymbol method) 2338var overriddenMethod = method.OverriddenMethod; 2455MethodSymbol constructor = expression.Constructor; 2516private bool ConstructorNotSideEffecting(MethodSymbol constructor) 2518var originalDef = constructor.OriginalDefinition; 2667var ctor = objCreation.Constructor; 2743var constructor = objCreation.Constructor; 3554var getTypeMethod = boundTypeOf.GetTypeFromHandle; 3587var symbol = node.Method.PartialDefinitionPart ?? node.Method; 3664var throwMethod = (MethodSymbol)_module.Compilation.GetWellKnownTypeMember(WellKnownMember.System_Threading_CancellationToken__ThrowIfCancellationRequested); 3720MethodSymbol getMethod = node.GetMethodFromHandle; 3747MethodSymbol getField = node.GetFieldFromHandle; 4094private void EmitCallCleanup(SyntaxNode syntax, UseKind useKind, MethodSymbol method)
CodeGen\EmitStackAllocInitializer.cs (3)
70if (Binder.GetWellKnownTypeMember(_module.Compilation, WellKnownMember.System_Runtime_CompilerServices_RuntimeHelpers__CreateSpanRuntimeFieldHandle, _diagnostics, syntax: syntaxNode, isOptional: true) is MethodSymbol createSpanHelper && 71Binder.GetWellKnownTypeMember(_module.Compilation, WellKnownMember.System_ReadOnlySpan_T__get_Item, _diagnostics, syntax: syntaxNode, isOptional: true) is MethodSymbol spanGetItemDefinition) 76var spanGetItem = spanGetItemDefinition.AsMember(readOnlySpan);
CodeGen\EmitStatement.cs (18)
1566var sequenceEqualsTMethod = (MethodSymbol)Binder.GetWellKnownTypeMember(_module.Compilation, 1572var sequenceEqualsCharMethod = sequenceEqualsTMethod.Construct(Binder.GetSpecialType(_module.Compilation, SpecialType.System_Char, syntaxNode, _diagnostics)); 1575var asSpanMethod = (MethodSymbol)Binder.GetWellKnownTypeMember(_module.Compilation, WellKnownMember.System_MemoryExtensions__AsSpan_String, _diagnostics, syntax: syntaxNode); 1581var stringEqualityMethod = _module.Compilation.GetSpecialTypeMember(SpecialMember.System_String__op_Equality) as MethodSymbol; 1662var spanTLengthMethod = (MethodSymbol)Binder.GetWellKnownTypeMember(_module.Compilation, 1667var spanCharLengthMethod = spanTLengthMethod.AsMember((NamedTypeSymbol)keyType); 1672var stringLengthMethod = _module.Compilation.GetSpecialTypeMember(SpecialMember.System_String__Length) as MethodSymbol; 1686var spanTIndexerMethod = (MethodSymbol)Binder.GetWellKnownTypeMember(_module.Compilation, 1692var spanCharLengthMethod = spanTIndexerMethod.AsMember((NamedTypeSymbol)keyType); 1698var stringCharsIndexer = _module.Compilation.GetSpecialTypeMember(SpecialMember.System_String__Chars) as MethodSymbol; 1728Debug.Assert(stringEqualityMethodRef == _module.Translate((MethodSymbol)_module.Compilation.GetSpecialTypeMember(SpecialMember.System_String__op_Equality), (CSharpSyntaxNode)syntaxNode, assertDiagnostics));
CodeGen\Optimizer.cs (2)
1166MethodSymbol method = node.Method; 1327var constructor = node.Constructor;
CommandLine\CSharpCompiler.cs (1)
250var method = comp.GetEntryPoint(cancellationToken);
Compilation\CSharpCompilation.cs (34)
302internal bool IsNullableAnalysisEnabledIn(MethodSymbol method) 358if (symbol is not MethodSymbol { IsAsync: true } method) 610var methodSymbol = (debugEntryPoint as Symbols.PublicModel.MethodSymbol)?.UnderlyingMethodSymbol; 1943internal new MethodSymbol? GetEntryPoint(CancellationToken cancellationToken) 1982var entryPointMethod = FindEntryPoint(simpleProgramEntryPointSymbol, cancellationToken, out diagnostics); 1993private MethodSymbol? FindEntryPoint(MethodSymbol? simpleProgramEntryPointSymbol, CancellationToken cancellationToken, out ReadOnlyBindingDiagnostic<AssemblySymbol> sealedDiagnostics) 1997var entryPointCandidates = ArrayBuilder<MethodSymbol>.GetInstance(); 2051foreach (var main in entryPointCandidates) 2072var taskEntryPoints = ArrayBuilder<(bool IsValid, MethodSymbol Candidate, BindingDiagnosticBag SpecificDiagnostics)>.GetInstance(); 2079bool checkValid(MethodSymbol candidate, bool isCandidate, BindingDiagnosticBag specificDiagnostics) 2097var viableEntryPoints = ArrayBuilder<MethodSymbol>.GetInstance(); 2099foreach (var candidate in entryPointCandidates) 2184MethodSymbol? entryPoint = null; 2198foreach (var viableEntryPoint in viableEntryPoints) 2238ArrayBuilder<MethodSymbol> entryPointCandidates, IEnumerable<Symbol> members) 2246if (member is MethodSymbol method && method.TryGetCorrespondingExtensionImplementationMethod() is { } implementationMethod) 2257static void addIfCandidate(ArrayBuilder<MethodSymbol> entryPointCandidates, Symbol member) 2259if (member is MethodSymbol method && 2267internal bool ReturnsAwaitableToVoidOrInt(MethodSymbol method, BindingDiagnosticBag diagnostics) 2310internal (bool IsCandidate, bool IsTaskLike) HasEntryPointSignature(MethodSymbol method, BindingDiagnosticBag bag) 2364public readonly MethodSymbol? MethodSymbol; 2369public EntryPoint(MethodSymbol? methodSymbol, ReadOnlyBindingDiagnostic<AssemblySymbol> diagnostics) 2523private ConcurrentSet<MethodSymbol>? _moduleInitializerMethods; 2525internal void AddModuleInitializerMethod(MethodSymbol method) 2553private ConcurrentDictionary<(ImmutableArray<byte> ContentHash, int Position), OneOrMany<(Location AttributeLocation, MethodSymbol Interceptor)>>? _interceptions; 2555internal void AddInterception(ImmutableArray<byte> contentHash, int position, Location attributeLocation, MethodSymbol interceptor) 2561() => new ConcurrentDictionary<(ImmutableArray<byte> ContentHash, int Position), OneOrMany<(Location AttributeLocation, MethodSymbol Interceptor)>>(comparer: InterceptorKeyComparer.Instance)); 2582internal (Location AttributeLocation, MethodSymbol Interceptor)? TryGetInterceptor(SimpleNameSyntax? node) 3188if (symbol.Kind == SymbolKind.Method && symbol.IsImplicitlyDeclared && ((MethodSymbol)symbol).MethodKind == MethodKind.Constructor) 3686var entryPoint = MethodCompiler.GetEntryPoint( 3849foreach ((_, OneOrMany<(Location, MethodSymbol)> interceptionsOfAGivenLocation) in _interceptions) 3875foreach (MethodSymbol method in _moduleInitializerMethods.OrderBy<MethodSymbol>(LexicalOrderSymbolComparer.Instance))
Compilation\CSharpSemanticModel.cs (32)
1687if (symbol is MethodSymbol { IsExtensionMethod: true } extensionMethod) 1811case MethodSymbol { MethodKind: MethodKind.LambdaMethod }: 3512var methodSymbol = eventAssignment.IsAddition ? eventSymbol.AddMethod : eventSymbol.RemoveMethod; 3543var symbol = conversion.SymbolOpt; 3648memberGroup = dynamicInvocation.ApplicableMethods.Cast<MethodSymbol, Symbol>(); 3656memberGroup = collectionInit.ApplicableMethods.Cast<MethodSymbol, Symbol>(); 3676memberGroup = objectCreation.ApplicableMethods.Cast<MethodSymbol, Symbol>(); 3695memberGroup = boundObjectCreation.ConstructorsGroup.Cast<MethodSymbol, Symbol>(); 3756return new ThisParameterSymbol(containingMember as MethodSymbol, typeOfThis); 3775thisParam = new ThisParameterSymbol(containingMember as MethodSymbol, containingType); 3782thisParam = new ThisParameterSymbol(containingMember as MethodSymbol, containingType); 3810thisParam = new ThisParameterSymbol(containingMember as MethodSymbol, typeOfThis); 3964private static void GetSymbolsAndResultKind(BoundExpression node, Symbol symbolOpt, ImmutableArray<MethodSymbol> originalCandidates, out OneOrMany<Symbol> symbols, out LookupResultKind resultKind) 3995MethodSymbol constructor = null; 4041MethodSymbol constructorOpt, 4058ImmutableArray<MethodSymbol> candidateConstructors; 4079candidateConstructors = ImmutableArray<MethodSymbol>.Empty; 4094memberGroup = candidateConstructors.Cast<MethodSymbol, Symbol>(); 4220private static ImmutableArray<MethodSymbol> FilterOverriddenOrHiddenMethods(ImmutableArray<MethodSymbol> methods) 4229foreach (MethodSymbol method in methods) 4322MethodSymbol method = null; 4351symbols = OneOrMany.Create(dynamicInvocation.ApplicableMethods.Cast<MethodSymbol, Symbol>()); 4599ImmutableArray<MethodSymbol> nonHiddenMethods = FilterOverriddenOrHiddenMethods(node.Methods); 4602foreach (var method in nonHiddenMethods) 4661if (singleLookupResult.Symbol is not (MethodSymbol or PropertySymbol)) 4788foreach (var method in FilterOverriddenOrHiddenMethods(methods)) 4803var method = call.Method; 4810MethodSymbol reduced = method.ReduceExtensionMethod(receiver.Type, Compilation); 4820var method = delegateCreation.MethodOpt; 4825MethodSymbol reduced = method.ReduceExtensionMethod(receiverOpt.Type, Compilation); 5261if (node.GetInterceptableNameSyntax() is { } nameSyntax && Compilation.TryGetInterceptor(nameSyntax) is (_, MethodSymbol interceptor))
Compilation\MemberSemanticModel.cs (6)
853var localFunction = GetDeclaredSymbol((LocalFunctionStatementSyntax)paramList.Parent, cancellationToken).GetSymbol<MethodSymbol>(); 1006MethodSymbol disposeMethod = null; 1018? (MethodSymbol)Compilation.GetWellKnownTypeMember(WellKnownMember.System_IAsyncDisposable__DisposeAsync) 1019: (MethodSymbol)Compilation.GetSpecialTypeMember(SpecialMember.System_IDisposable__Dispose); 2382Debug.Assert(symbol is LocalSymbol or ParameterSymbol or MethodSymbol { MethodKind: MethodKind.LambdaMethod });
Compilation\MemberSemanticModel.SpeculativeMemberSemanticModel.cs (2)
52return NullableWalker.AnalyzeAndRewrite(Compilation, MemberSymbol as MethodSymbol, boundRoot, binder, initialState: null, diagnostics, createSnapshots: false, out snapshotManager, ref remappedSymbols); 57NullableWalker.AnalyzeWithoutRewrite(Compilation, MemberSymbol as MethodSymbol, boundRoot, binder, diagnostics, createSnapshots);
Compilation\MethodBodySemanticModel.cs (15)
44MethodSymbol owner, 61internal static MethodBodySemanticModel Create(SyntaxTreeSemanticModel containingSemanticModel, MethodSymbol owner, InitialState initialState) 112MethodSymbol owner, 124MethodSymbol owner, 137internal static SpeculativeSemanticModelWithMemberModel CreateSpeculative(SyntaxTreeSemanticModel parentSemanticModel, MethodSymbol owner, ArrowExpressionClauseSyntax syntax, Binder rootBinder, int position) 145internal static SpeculativeSemanticModelWithMemberModel CreateSpeculative(SyntaxTreeSemanticModel parentSemanticModel, MethodSymbol owner, ConstructorInitializerSyntax syntax, Binder rootBinder, int position) 153internal static SpeculativeSemanticModelWithMemberModel CreateSpeculative(SyntaxTreeSemanticModel parentSemanticModel, MethodSymbol owner, PrimaryConstructorBaseTypeSyntax syntax, Binder rootBinder, int position) 168var methodSymbol = (MethodSymbol)this.MemberSymbol; 212var methodSymbol = (MethodSymbol)this.MemberSymbol; 230var methodSymbol = (MethodSymbol)this.MemberSymbol; 240if (MemberSymbol is MethodSymbol methodSymbol && methodSymbol.MethodKind == MethodKind.Constructor && 305return Compilation.IsNullableAnalysisEnabledIn((MethodSymbol)MemberSymbol);
Compilation\SpeculativeSemanticModelWithMemberModel.cs (1)
103MethodSymbol owner,
Compilation\SyntaxTreeSemanticModel.cs (7)
1535return ((MethodSymbol)GetDeclaredMemberSymbol(declarationSyntax)).GetPublicSymbol(); 1617return (this.GetDeclaredMember(container, declarationSyntax.Span, isKnownToBeANamespace: false) as MethodSymbol).GetPublicSymbol(); 1640return (this.GetDeclaredMember(container, declarationSyntax.Span, isKnownToBeANamespace: false) as MethodSymbol).GetPublicSymbol(); 2077MethodSymbol method; 2147var delegateInvoke = delegateType.DelegateInvokeMethod; 2220case MethodSymbol methodSymbol: 2452Debug.Assert(symbol is LocalSymbol or ParameterSymbol or MethodSymbol { MethodKind: MethodKind.LambdaMethod });
Compiler\AnonymousTypeMethodBodySynthesizer.cs (3)
201MethodSymbol equalityComparer_GetHashCode = manager.System_Collections_Generic_EqualityComparer_T__GetHashCode; 202MethodSymbol equalityComparer_get_Default = manager.System_Collections_Generic_EqualityComparer_T__get_Default; 286var formatMethod = manager.System_String__Format_IFormatProvider;
Compiler\ClsComplianceChecker.cs (17)
275foreach (MethodSymbol constructor in attributeType.InstanceConstructors) 303public override void VisitMethod(MethodSymbol symbol) 340private void CheckForAttributeOnAccessor(MethodSymbol symbol) 476MethodSymbol method = type.DelegateInvokeMethod; 483MethodSymbol method = (MethodSymbol)symbol; 591CheckForAttributeWithArrayArgumentInternal(((MethodSymbol)symbol).GetReturnTypeAttributes()); 683Symbol associated = ((MethodSymbol)container).AssociatedSymbol; 702private void CheckForMeaninglessOnReturn(MethodSymbol method) 733MethodSymbol method = (MethodSymbol)symbol; 1126MethodSymbol method = (MethodSymbol)symbol; 1332var mX = (MethodSymbol)x; 1336var mY = (MethodSymbol)y;
Compiler\DocumentationCommentCompiler.cs (3)
338public override void VisitMethod(MethodSymbol symbol) 342MethodSymbol underlyingMethod = implementation.UnderlyingMethod; 758MethodSymbol delegateInvoke = ((NamedTypeSymbol)symbol).DelegateInvokeMethod;
Compiler\DocumentationCommentCompiler.IncludeElementExpander.cs (3)
563parameters = ((MethodSymbol)memberSymbol).Parameters; 599MethodSymbol methodSymbol = (MethodSymbol)currentSymbol;
Compiler\MethodBodySynthesizer.cs (18)
24MethodSymbol constructor, 86MethodSymbol submissionConstructor, 238MethodSymbol accessor = isAddMethod ? eventSymbol.AddMethod : eventSymbol.RemoveMethod; 247MethodSymbol getOrCreateMethod = (MethodSymbol)Binder.GetWellKnownTypeMember( 265MethodSymbol processHandlerMethod = (MethodSymbol)Binder.GetWellKnownTypeMember( 351MethodSymbol accessor = isAddMethod ? eventSymbol.AddMethod : eventSymbol.RemoveMethod; 357MethodSymbol updateMethod = (MethodSymbol)compilation.GetSpecialTypeMember(updateMethodId); 394MethodSymbol compareExchangeMethod = (MethodSymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Threading_Interlocked__CompareExchange_T); 530internal static BoundBlock ConstructDestructorBody(MethodSymbol method, BoundBlock block) 540MethodSymbol baseTypeFinalize = GetBaseTypeFinalizeMethod(method); 595private static MethodSymbol GetBaseTypeFinalizeMethod(MethodSymbol method) 604MethodSymbol baseTypeMethod = (MethodSymbol)member;
Compiler\MethodBodySynthesizer.Lowered.cs (11)
243F.CurrentFunction = (MethodSymbol)this.OriginalDefinition; 247MethodSymbol methodToInvoke = 281F.CurrentFunction = (MethodSymbol)this.OriginalDefinition; 324MethodSymbol methodBeingWrapped = this.BaseMethod; 354MethodSymbol system_Collections_Generic_EqualityComparer_T__GetHashCode, 355MethodSymbol system_Collections_Generic_EqualityComparer_T__get_Default, 378MethodSymbol system_Collections_Generic_EqualityComparer_T__GetHashCode, 379MethodSymbol system_Collections_Generic_EqualityComparer_T__get_Default, 413var equalityComparer_get_Default = F.WellKnownMethod( 415var equalityComparer_Equals = F.WellKnownMethod( 455internal static BoundBlock ConstructSingleInvocationMethodBody(SyntheticBoundNodeFactory F, MethodSymbol methodToInvoke, bool useBaseReference)
Compiler\MethodCompiler.cs (28)
136MethodSymbol? entryPoint = null; 226internal static MethodSymbol GetEntryPoint(CSharpCompilation compilation, PEModuleBuilder moduleBeingBuilt, bool hasDeclarationErrors, bool emitMethodBodies, BindingDiagnosticBag diagnostics, CancellationToken cancellationToken) 234var entryPoint = entryPointAndDiagnostics.MethodSymbol; 527MethodSymbol method = (MethodSymbol)member; 609foreach (var method in AnonymousTypeManager.GetAnonymousTypeHiddenMethods(containingType)) 625MethodSymbol method = new SynthesizedStaticConstructor(sourceTypeSymbol); 680internal static MethodSymbol GetMethodToCompile(MethodSymbol method) 698var method = (MethodSymbol)definition.GetInternalSymbol(); 717foreach (var method in additionalType.GetMethodsToEmit()) 758var method = methodWithBody.Method; 903public override object VisitMethod(MethodSymbol symbol, TypeCompilationState arg) 924MethodSymbol methodSymbol, 1412private void EmitSkeletonMethodInExtension(MethodSymbol methodSymbol) 1424var ctor = (MethodSymbol)Binder.GetWellKnownTypeMember(_compilation, WellKnownMember.System_NotSupportedException__ctor, _diagnostics, syntax: syntax, isOptional: false); 1471private static MethodSymbol GetSymbolForEmittedBody(MethodSymbol methodSymbol) 1478MethodSymbol method, 1634MethodSymbol method, 1675MethodSymbol kickoffMethod; 1758MethodSymbol methodBodyParentSymbol = GetSymbolForEmittedBody(method); 1868internal static BoundBlock? BindSynthesizedMethodBody(MethodSymbol method, TypeCompilationState compilationState, BindingDiagnosticBag diagnostics) 1885MethodSymbol method, 2484private static BoundStatement BindImplicitConstructorInitializerIfAny(MethodSymbol method, TypeCompilationState compilationState, BindingDiagnosticBag diagnostics) 2508private static void ReportCtorInitializerCycles(MethodSymbol method, BoundExpression initializerInvocation, TypeCompilationState compilationState, BindingDiagnosticBag diagnostics)
Compiler\ModuleCompilationState.cs (1)
11internal sealed class ModuleCompilationState : ModuleCompilationState<NamedTypeSymbol, MethodSymbol>
Compiler\SynthesizedMetadataCompiler.cs (1)
117public override void VisitMethod(MethodSymbol symbol)
Compiler\TypeCompilationState.cs (19)
29public readonly MethodSymbol Method; 33internal MethodWithBody(MethodSymbol method, BoundStatement body, ImportChain? importChain) 52private Dictionary<MethodSymbol, MethodSymbol>? _wrappers; 80private SmallDictionary<MethodSymbol, MethodSymbol>? _constructorInitializers; 133public void AddSynthesizedMethod(MethodSymbol method, BoundStatement body) 150public void AddMethodWrapper(MethodSymbol method, MethodSymbol wrapper, BoundStatement body) 156_wrappers = new Dictionary<MethodSymbol, MethodSymbol>(); 175public MethodSymbol? GetMethodWrapper(MethodSymbol method) 177MethodSymbol? wrapper = null; 202internal void ReportCtorInitializerCycles(MethodSymbol method1, MethodSymbol method2, SyntaxNode syntax, BindingDiagnosticBag diagnostics) 217_constructorInitializers = new SmallDictionary<MethodSymbol, MethodSymbol>(); 222MethodSymbol? next = method2;
DocumentationComments\DocumentationCommentIDVisitor.cs (1)
37public override object VisitMethod(MethodSymbol symbol, StringBuilder builder)
DocumentationComments\DocumentationCommentIDVisitor.PartVisitor.cs (1)
98public override object VisitMethod(MethodSymbol symbol, StringBuilder builder)
Emitter\EditAndContinue\CSharpSymbolMatcher.cs (6)
187public override Symbol? VisitMethod(MethodSymbol symbol) 459SymbolKind.Method => ((MethodSymbol)otherContainer).TypeParameters, 605private bool AreMethodsEqual(MethodSymbol method, MethodSymbol other) 621private static MethodSymbol SubstituteTypeParameters(MethodSymbol method)
Emitter\EditAndContinue\EmitHelpers.cs (3)
41if (!GetPredefinedHotReloadExceptionTypeConstructor(compilation, diagnostics, out var predefinedHotReloadExceptionConstructor)) 164private static bool GetPredefinedHotReloadExceptionTypeConstructor(CSharpCompilation compilation, DiagnosticBag diagnostics, out MethodSymbol? constructor) 166constructor = compilation.GetWellKnownTypeMember(WellKnownMember.System_Runtime_CompilerServices_HotReloadException__ctorStringInt32) as MethodSymbol;
Emitter\EditAndContinue\PEDeltaAssemblyBuilder.cs (5)
27private readonly MethodSymbol? _predefinedHotReloadExceptionConstructor; 55MethodSymbol? predefinedHotReloadExceptionConstructor) 236internal override VariableSlotAllocator? TryCreateVariableSlotAllocator(MethodSymbol method, MethodSymbol topLevelMethod, DiagnosticBag diagnostics) 241internal override MethodInstrumentation GetMethodBodyInstrumentations(MethodSymbol method)
Emitter\Model\GenericMethodInstanceReference.cs (1)
20public GenericMethodInstanceReference(MethodSymbol underlyingMethod)
Emitter\Model\MethodReference.cs (2)
17protected readonly MethodSymbol UnderlyingMethod; 19public MethodReference(MethodSymbol underlyingMethod)
Emitter\Model\MethodSymbolAdapter.cs (5)
282(MethodSymbol)AdaptedMethodSymbol.OriginalDefinition, 288MethodSymbol methodSymbol = AdaptedMethodSymbol.ConstructedFrom; 298return ((MethodSymbol)AdaptedMethodSymbol.OriginalDefinition).GetCciAdapter(); 722internal MethodSymbolAdapter(MethodSymbol underlyingMethodSymbol) 734internal MethodSymbol AdaptedMethodSymbol { get; }
Emitter\Model\NamedTypeSymbolAdapter.cs (14)
330var method = (MethodSymbol)member; 338foreach (var implemented in method.ExplicitInterfaceImplementations) 371MethodSymbol objectMethod = objectMember as MethodSymbol; 390foreach ((MethodSymbol body, MethodSymbol implemented) in container.GetSynthesizedExplicitImplementations(cancellationToken: default).MethodImpls) 409var method = m.GetInternalSymbol() as MethodSymbol; 414foreach (var implemented in method.ExplicitInterfaceImplementations) 630foreach (var method in AdaptedNamedTypeSymbol.GetMethodsToEmit()) 1038internal virtual IEnumerable<MethodSymbol> GetMethodsToEmit() 1046var method = (MethodSymbol)m;
Emitter\Model\PEModuleBuilder.cs (29)
28internal abstract class PEModuleBuilder : PEModuleBuilder<CSharpCompilation, SourceModuleSymbol, AssemblySymbol, TypeSymbol, NamedTypeSymbol, MethodSymbol, SyntaxNode, NoPia.EmbeddedTypesManager, ModuleCompilationState> 401var method = (MethodSymbol)member; 510internal virtual VariableSlotAllocator TryCreateVariableSlotAllocator(MethodSymbol method, MethodSymbol topLevelMethod, DiagnosticBag diagnostics) 515internal virtual MethodInstrumentation GetMethodBodyInstrumentations(MethodSymbol method) 993return ((MethodSymbol)Compilation.GetWellKnownTypeMember(WellKnownMember.System_Runtime_CompilerServices_RuntimeHelpers__InitializeArrayArrayRuntimeFieldHandle))?.GetCciAdapter(); 1355internal sealed override Cci.IMethodReference Translate(MethodSymbol symbol, DiagnosticBag diagnostics, bool needDeclaration) 1361MethodSymbol methodSymbol, 1395MethodSymbol methodSymbol, 1455else if (methodSymbol is NativeIntegerMethodSymbol { UnderlyingMethod: MethodSymbol underlyingMethod }) 1471MethodSymbol methodSymbol, 1583return container.Kind == SymbolKind.Method && ((MethodSymbol)container).IsGenericMethod || 2013internal MethodSymbol EnsureThrowSwitchExpressionExceptionExists(SyntaxNode syntaxNode, SyntheticBoundNodeFactory factory, DiagnosticBag diagnostics) 2026private MethodSymbol EnsurePrivateImplClassMethodExists<TArg>(SyntaxNode syntaxNode, string methodName, Func<SynthesizedPrivateImplementationDetailsType, TArg, MethodSymbol> createMethodSymbol, TArg arg, DiagnosticBag diagnostics) 2033return (MethodSymbol)methodAdapter.GetInternalSymbol()!; 2036MethodSymbol methodSymbol = createMethodSymbol(privateImplClass, arg); 2041return (MethodSymbol)privateImplClass.PrivateImplementationDetails.GetMethod(methodName)!.GetInternalSymbol()!; 2060internal MethodSymbol EnsureThrowSwitchExpressionExceptionParameterlessExists(SyntaxNode syntaxNode, SyntheticBoundNodeFactory factory, DiagnosticBag diagnostics) 2080internal MethodSymbol EnsureThrowInvalidOperationExceptionExists(SyntaxNode syntaxNode, SyntheticBoundNodeFactory factory, DiagnosticBag diagnostics) 2097internal MethodSymbol EnsureInlineArrayAsSpanExists(SyntaxNode syntaxNode, NamedTypeSymbol spanType, NamedTypeSymbol intType, DiagnosticBag diagnostics) 2133var attributeConstructor = (MethodSymbol)arg.factory.SpecialMember(SpecialMember.System_Runtime_CompilerServices_InlineArrayAttribute__ctor); 2168internal MethodSymbol EnsureInlineArrayAsReadOnlySpanExists(SyntaxNode syntaxNode, NamedTypeSymbol spanType, NamedTypeSymbol intType, DiagnosticBag diagnostics) 2185internal MethodSymbol EnsureInlineArrayElementRefExists(SyntaxNode syntaxNode, NamedTypeSymbol intType, DiagnosticBag diagnostics) 2201internal MethodSymbol EnsureInlineArrayElementRefReadOnlyExists(SyntaxNode syntaxNode, NamedTypeSymbol intType, DiagnosticBag diagnostics) 2217internal MethodSymbol EnsureInlineArrayFirstElementRefExists(SyntaxNode syntaxNode, DiagnosticBag diagnostics) 2230internal MethodSymbol EnsureInlineArrayFirstElementRefReadOnlyExists(SyntaxNode syntaxNode, DiagnosticBag diagnostics)
Emitter\Model\PropertySymbolAdapter.cs (2)
72MethodSymbol getMethod = AdaptedPropertySymbol.GetMethod; 127MethodSymbol setMethod = AdaptedPropertySymbol.SetMethod;
Emitter\Model\SpecializedGenericMethodInstanceReference.cs (1)
24public SpecializedGenericMethodInstanceReference(MethodSymbol underlyingMethod)
Emitter\Model\SpecializedMethodReference.cs (1)
21public SpecializedMethodReference(MethodSymbol underlyingMethod)
Emitter\Model\TypeParameterSymbolAdapter.cs (2)
222return ((MethodSymbol)AdaptedTypeParameterSymbol.ContainingSymbol).GetCciAdapter(); 347return ((MethodSymbol)AdaptedTypeParameterSymbol.ContainingSymbol).GetCciAdapter();
Emitter\NoPia\EmbeddedEvent.cs (1)
135TypeManager.EmbedMethodIfNeedTo(((MethodSymbol)m).GetCciAdapter(), syntaxNodeOpt, diagnostics);
Emitter\NoPia\EmbeddedType.cs (3)
49foreach (MethodSymbol m in UnderlyingNamedType.AdaptedNamedTypeSymbol.GetMethodsToEmit()) 253var ctor = TypeManager.GetWellKnownMethod(member, syntaxNodeOpt, diagnostics); 304TypeManager.EmbedMethod(this, ((MethodSymbol)s).GetCciAdapter(), syntaxNodeOpt, diagnostics);
Emitter\NoPia\EmbeddedTypesManager.cs (17)
41private readonly MethodSymbol[] _lazyWellKnownTypeMethods; 42private readonly MethodSymbol[] _lazySpecialTypeMethods; 47_lazyWellKnownTypeMethods = new MethodSymbol[(int)WellKnownMember.Count]; 54_lazySpecialTypeMethods = new MethodSymbol[(int)SpecialMember.Count]; 89public MethodSymbol GetWellKnownMethod(WellKnownMember method, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics) 97private MethodSymbol LazyGetWellKnownTypeMethod(ref MethodSymbol lazyMethod, WellKnownMember member, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics) 102var symbol = (MethodSymbol)Binder.GetWellKnownTypeMember(ModuleBeingBuilt.Compilation, 126public MethodSymbol GetSpecialMethod(SpecialMember method, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics) 134private MethodSymbol LazyGetSpecialTypeMethod(ref MethodSymbol lazyMethod, SpecialMember member, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics) 139var symbol = (MethodSymbol)Binder.GetSpecialTypeMember(ModuleBeingBuilt.Compilation, 167var ctor = GetWellKnownMethod(constructor, syntaxNodeOpt, diagnostics); 199var ctor = GetSpecialMethod(constructor, syntaxNodeOpt, diagnostics); 468foreach (MethodSymbol m in namedType.GetMethodsToEmit())
Errors\LazyUnmanagedCallersOnlyMethodCalledDiagnosticInfo.cs (2)
13private readonly MethodSymbol _method; 16internal LazyUnmanagedCallersOnlyMethodCalledDiagnosticInfo(MethodSymbol method, bool isDelegateConversion)
FlowAnalysis\AbstractFlowPass.cs (25)
470var method = _symbol as MethodSymbol; 484(_symbol as MethodSymbol)?.TryGetThisParameter(out thisParameter); 496var method = _symbol as MethodSymbol; 1468private void VisitReceiverBeforeCall(BoundExpression receiverOpt, MethodSymbol method) 1476private void VisitReceiverAfterCall(BoundExpression receiverOpt, MethodSymbol method) 1531var method = GetReadMethod(node.Indexer); 1565protected virtual void VisitArguments(ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> refKindsOpt, MethodSymbol method, ImmutableArray<int> argsToParamsOpt, bool expanded) 1593private void VisitArgumentsAfterCall(ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> refKindsOpt, MethodSymbol? method, ImmutableArray<int> argsToParamsOpt, bool expanded) 1627protected virtual void WriteArgument(BoundExpression arg, RefKind refKind, MethodSymbol method) 1691static bool ignoreReceiver(MethodSymbol method) 2170protected virtual void PropertySetter(BoundExpression node, BoundExpression receiver, MethodSymbol setter, BoundExpression value = null) 2197var method = GetWriteMethod(property); 2252var readMethod = GetReadMethod(property); 2271var writeMethod = GetWriteMethod(property); 2331var method = GetReadMethod(property); 2888var readMethod = GetReadMethod(property); 2889var writeMethod = GetWriteMethod(property); 3092var method = conversion.Method; 3669MethodSymbol method = null; 3780private static MethodSymbol GetReadMethod(PropertySymbol property) => 3783private static MethodSymbol GetWriteMethod(PropertySymbol property) => 3807var readMethod = property.GetOwnOrInheritedGetMethod(); 3865var writeMethod = symbol.GetOwnOrInheritedSetMethod();
FlowAnalysis\AbstractFlowPass_LocalFunctions.cs (1)
73var localFuncSymbol = localFunc.Symbol;
FlowAnalysis\AlwaysAssignedWalker.cs (1)
73protected override void WriteArgument(BoundExpression arg, RefKind refKind, MethodSymbol method)
FlowAnalysis\CSharpDataFlowAnalysis.cs (3)
255IEnumerable<MethodSymbol> usedLocalFunctions; 267usedLocalFunctions = Enumerable.Empty<MethodSymbol>(); 395private static ImmutableArray<IMethodSymbol> Normalize(IEnumerable<MethodSymbol> data)
FlowAnalysis\DefiniteAssignment.cs (18)
103&& CurrentSymbol is MethodSymbol { MethodKind: MethodKind.Constructor, ContainingType.TypeKind: TypeKind.Struct }; 158protected MethodSymbol? topLevelMethod; 187this.topLevelMethod = member as MethodSymbol; 206this.topLevelMethod = member as MethodSymbol; 341case MethodSymbol { IsStatic: false, ContainingSymbol: SourceMemberContainerTypeSymbol { PrimaryConstructor: { } primaryConstructor } } and 503MethodSymbol member, 692protected IEnumerable<MethodSymbol> GetUsedLocalFunctions() => _usedLocalFunctions.ToArray(); 1211Debug.Assert(CurrentSymbol is MethodSymbol { MethodKind: MethodKind.Constructor, ContainingType.TypeKind: TypeKind.Struct }); 1264if (CurrentSymbol is not MethodSymbol { MethodKind: MethodKind.Constructor, ContainingType.TypeKind: TypeKind.Struct }) 1762if ((object)current != CurrentSymbol && current is MethodSymbol method) 1814if (current is not MethodSymbol && parameter.RefKind == RefKind.Out) 1844if (parameter.RefKind == RefKind.Out && !(this.CurrentSymbol is MethodSymbol currentMethod && currentMethod.IsAsync)) // out parameters not allowed in async 2289private void ReportUnusedVariables(ImmutableArray<MethodSymbol> locals) 2291foreach (var symbol in locals) 2297private void ReportIfUnused(MethodSymbol symbol) 2327if (localSymbol.IsFixed && this.CurrentSymbol is MethodSymbol currentMethod && 2369foreach (var method in node.Methods) 2524protected override void WriteArgument(BoundExpression arg, RefKind refKind, MethodSymbol method)
FlowAnalysis\DefiniteAssignment.LocalFunctions.cs (1)
163((MethodSymbol)symbol).MethodKind == MethodKind.LocalFunction)
FlowAnalysis\DefiniteAssignment.VariableIdentifier.cs (1)
36SymbolKind.Method when symbol is MethodSymbol m && m.MethodKind == MethodKind.LocalFunction => true,
FlowAnalysis\FlowAnalysisPass.cs (6)
32MethodSymbol method, 113private static BoundBlock PrependImplicitInitializations(BoundBlock body, MethodSymbol method, ImmutableArray<FieldSymbol> implicitlyInitializedFields, TypeCompilationState compilationState, BindingDiagnosticBag diagnostics) 168private static BoundBlock AppendImplicitReturn(BoundBlock body, MethodSymbol method, bool originalBodyNested) 179return body.Update(body.Locals, ImmutableArray<MethodSymbol>.Empty, body.HasUnsafeModifier, body.Instrumentation, builder.ToImmutableAndFree()); 190internal static BoundBlock AppendImplicitReturn(BoundBlock body, MethodSymbol method) 212MethodSymbol method,
FlowAnalysis\NullableWalker.cs (186)
224private MethodSymbol? _delegateInvokeMethod; 263private PooledDictionary<MethodSymbol, Variables>? _nestedFunctionVariables; 288private readonly MethodSymbol? _baseOrThisInitializer; 502MethodSymbol? delegateInvokeMethodOpt, 507MethodSymbol? baseOrThisInitializer, 658if ((_symbol as MethodSymbol)?.IsConstructor() != true || _useConstructorExitWarnings) 686var method = _symbol as MethodSymbol; 758void checkMemberStateOnConstructorExit(MethodSymbol constructor, Symbol member, LocalState state, int thisSlot, Location? exitLocation, ImmutableArray<string> membersWithStateEnforcedByRequiredMembers, bool forcePropertyAnalysis) 852if (_symbol is MethodSymbol method) 930var baseOrThisInitializer = GetBaseOrThisInitializer(); 1096private void EnforceMemberNotNullOnMember(SyntaxNode? syntaxOpt, LocalState state, MethodSymbol method, string memberName) 1130if (_symbol is MethodSymbol method) 1160if (_symbol is MethodSymbol method) 1208private void MakeMembersMaybeNull(MethodSymbol method, ImmutableArray<string> members) 1216void makeMemberMaybeNull(MethodSymbol method, string memberName) 1250containingSlot = GetReceiverSlotForMemberPostConditions(_symbol as MethodSymbol); 1266private MethodSymbol? GetBaseOrThisInitializer() 1273if (_symbol is not MethodSymbol method) 1321if (_symbol is not MethodSymbol method) 1439else if (CurrentSymbol is MethodSymbol { IsAsync: false }) 1451if (CurrentSymbol is MethodSymbol method && 1465MethodSymbol method, 1471MethodSymbol? baseOrThisInitializer, 1492MethodSymbol method, 1498MethodSymbol? baseOrThisInitializer, 1535if (symbol is MethodSymbol method 1551internal static VariableState? GetAfterInitializersState(CSharpCompilation compilation, MethodSymbol method, BoundNode nodeToAnalyze, BoundNode? constructorBody, BindingDiagnosticBag diagnostics) 1568MethodSymbol? baseOrThisInitializer = GetConstructorThisOrBaseSymbol(constructorBody); 1589private static MethodSymbol? GetConstructorThisOrBaseSymbol(BoundNode? constructorBody) 1818MethodSymbol? delegateInvokeMethodOpt, 1823var symbol = lambda.Symbol; 1864MethodSymbol? delegateInvokeMethodOpt, 1866MethodSymbol? baseOrThisInitializer, 2183var method = getTopLevelMethod(_symbol as MethodSymbol); 2262static MethodSymbol? getTopLevelMethod(MethodSymbol? method) 2271method = container as MethodSymbol; 2289var enclosingMemberMethod = _symbol as MethodSymbol; 2293enclosingMemberMethod = enclosingMemberMethod.ContainingSymbol as MethodSymbol; 2306if (this._symbol is MethodSymbol constructor 2842if (_symbol is not MethodSymbol method) 2997if (!(CurrentSymbol is MethodSymbol methodSymbol)) 3160if (CurrentSymbol is MethodSymbol method) 3195var method = CurrentSymbol as MethodSymbol; 3203var delegateOrMethod = _useDelegateInvokeReturnType ? _delegateInvokeMethod! : method; 3435private Variables GetOrCreateNestedFunctionVariables(Variables container, MethodSymbol lambdaOrLocalFunction) 3437_nestedFunctionVariables ??= PooledDictionary<MethodSymbol, Variables>.GetInstance(); 3449MethodSymbol lambdaOrFunctionSymbol, 3451MethodSymbol? delegateInvokeMethod, 3463var oldDelegateInvokeMethod = _delegateInvokeMethod; 3648private void VisitAwaitableInfoForUsing(BoundAwaitableInfo? awaitInfo, MethodSymbol? patternDisposeMethod) 3856var invokeMethod = n.DelegateInvokeMethod; 4004var constructor = (MethodSymbol)AsMemberOfType(collectionFinalType, objectCreation.Constructor); 4059var constructed = call.Method.Arity == 0 ? call.Method : call.Method.ConstructedFrom.Construct(allTypeArguments); 4108var addMethod = initializer.AddMethod; 4109MethodSymbol reinferredAddMethod; 4112reinferredAddMethod = (MethodSymbol)AsMemberOfType(targetCollectionType, addMethod); 4224var createMethod = node.CollectionBuilderMethod; 4240var createMethod = node.CollectionBuilderMethod; 4288MethodSymbol? constructor = getConstructor(node, node.Type); 4291ReinferenceResult<MethodSymbol> reinferenceResult = VisitArgumentsCore( 4297ArgumentsCompletionDelegate<MethodSymbol>? argumentsCompletion = reinferenceResult.Completion; 4302(int slot, NullableFlowState resultState, Func<TypeSymbol, MethodSymbol?, int>? initialStateInferenceCompletion) = 4319ArgumentsCompletionDelegate<MethodSymbol>? argumentsCompletion, 4320Func<TypeSymbol, MethodSymbol?, int>? initialStateInferenceCompletion, 4348ArgumentsCompletionDelegate<MethodSymbol> argumentsCompletion, 4349Func<TypeSymbol, MethodSymbol?, int> initialStateInferenceCompletion, 4361MethodSymbol? constructor = getConstructor(node, type); 4373static MethodSymbol? getConstructor(BoundObjectCreationExpressionBase node, TypeSymbol type) 4375var constructor = node.Constructor; 4379constructor = (MethodSymbol)AsMemberOfType(type, constructor); 4385(int slot, NullableFlowState resultState, Func<TypeSymbol, MethodSymbol?, int>? completion) inferInitialObjectState( 4386BoundExpression node, TypeSymbol type, MethodSymbol? constructor, 4461static bool isSuitableUnionConstruction(TypeSymbol type, [NotNullWhen(true)] MethodSymbol? constructor, [NotNullWhen(true)] out PropertySymbol? valueProperty) 4478Func<TypeSymbol, MethodSymbol?, int> inferInitialObjectStateAsContinuation( 4484return (TypeSymbol type, MethodSymbol? constructor) => 4846MethodSymbol addMethod = addMethodAsMemberOfContainingType(node, containingType, ref argumentResults); 4862MethodSymbol? reinferredMethod = reinferenceResult.Member; 4864ArgumentsCompletionDelegate<MethodSymbol>? visitArgumentsCompletion = reinferenceResult.Completion; 4880MethodSymbol? reinferredMethod, 4882ArgumentsCompletionDelegate<MethodSymbol>? visitArgumentsCompletion, 4907ArgumentsCompletionDelegate<MethodSymbol> visitArgumentsCompletion) 4911MethodSymbol addMethod = addMethodAsMemberOfContainingType(node, containingType, ref argumentResults); 4919static MethodSymbol addMethodAsMemberOfContainingType(BoundCollectionElementInitializer node, TypeSymbol containingType, ref ImmutableArray<VisitResult> argumentResults) 4921var method = node.AddMethod; 4945method = (MethodSymbol)AsMemberOfType(containingType, method); 5380private TypeWithState InferResultNullability(BinaryOperatorKind operatorKind, MethodSymbol? methodOpt, TypeSymbol resultType, TypeWithState leftType, TypeWithState rightType) 5619MethodSymbol? method, 5642MethodSymbol reinferredMethod = ReInferBinaryOperator(binary.Syntax, method, leftOperand, rightOperand, leftUnderlyingType, rightUnderlyingType); 5699private MethodSymbol ReInferBinaryOperator( 5701MethodSymbol method, 5708MethodSymbol reinferredMethod; 5714reinferredMethod = (MethodSymbol)AsMemberOfType(asMemberOfType, method); 6932ReinferenceResult<MethodSymbol> reinferenceResult = ReInferMethodAndVisitArguments( 6946MethodSymbol? method = reinferenceResult.Member; 6963private TypeWithState VisitAndCheckReceiver(BoundExpression? receiverOpt, MethodSymbol method) 6977private ReinferenceResult<MethodSymbol> ReInferMethodAndVisitArguments( 6981MethodSymbol method, 6997method = (MethodSymbol)AsMemberOfType(receiverType.Type, method); 7005ReinferenceResult<MethodSymbol> reinferenceResult = VisitArgumentsCore(node, receiverType.Type, arguments, refKindsOpt, parameters, argsToParamsOpt, defaultArguments, 7009var newMethod = reinferenceResult.Member; 7098private void LearnFromEqualsMethod(MethodSymbol method, BoundCall node, TypeWithState receiverType, ImmutableArray<VisitResult> results) 7136static bool anyOverriddenMethodHasExplicitImplementation(MethodSymbol method) 7138for (var overriddenMethod = method; overriddenMethod is object; overriddenMethod = overriddenMethod.OverriddenMethod) 7149static bool isWellKnownEqualityMethodOrImplementation(CSharpCompilation compilation, MethodSymbol method, TypeSymbol? receiverType, WellKnownMember wellKnownMember) 7151var wellKnownMethod = (MethodSymbol?)compilation.GetWellKnownTypeMember(wellKnownMember); 7160var constructedMethod = wellKnownMethod.AsMember(constructedType); 7185for (var overriddenMethod = method; overriddenMethod is object; overriddenMethod = overriddenMethod.OverriddenMethod) 7263private bool IsCompareExchangeMethod(MethodSymbol? method) 7335private void CheckCallReceiver(BoundExpression? receiverOpt, TypeWithState receiverType, MethodSymbol method) 7368private TypeWithState GetReturnTypeWithState(MethodSymbol method) 7506protected override void VisitArguments(ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> refKindsOpt, MethodSymbol method, ImmutableArray<int> argsToParamsOpt, bool expanded) 7517MethodSymbol? method, 7638if (member is MethodSymbol reinferredMethod) 7658var method = member as MethodSymbol; 7909private void ApplyMemberPostConditions(BoundExpression? receiverOpt, MethodSymbol? method) 7933private int GetReceiverSlotForMemberPostConditions(MethodSymbol? method) 7945MethodSymbol? current = method; 7946while (current.ContainingSymbol is MethodSymbol container) 7963private void ApplyMemberPostConditions(TypeSymbol? receiverType, int receiverSlot, MethodSymbol method) 8487parameter.ContainingSymbol is MethodSymbol method && 8833internal override TypeWithAnnotations GetMethodGroupResultType(BoundMethodGroup group, MethodSymbol method) 8839method = (MethodSymbol)AsMemberOfType(receiverType.Type, method); 8934private void CheckMethodConstraints(SyntaxNode syntax, MethodSymbol method) 9145if (((MethodSymbol)symbol).MethodKind == MethodKind.LocalFunction) 9218if (result is MethodSymbol resultMethod && resultMethod.IsGenericMethod) 9220result = resultMethod.Construct(((MethodSymbol)symbol).TypeArgumentsWithAnnotations); 9657private void ReportNullabilityMismatchWithTargetDelegate(Location location, TypeSymbol targetType, MethodSymbol targetInvokeMethod, MethodSymbol sourceInvokeMethod, bool invokedAsExtensionMethod) 9675void reportBadDelegateReturn(BindingDiagnosticBag bag, MethodSymbol targetInvokeMethod, MethodSymbol sourceInvokeMethod, bool topLevel, (TypeSymbol targetType, Location location) arg) 9682void reportBadDelegateParameter(BindingDiagnosticBag bag, MethodSymbol sourceInvokeMethod, MethodSymbol targetInvokeMethod, ParameterSymbol parameter, bool topLevel, (TypeSymbol targetType, Location location) arg) 9693MethodSymbol? targetInvokeMethod = delegateType.DelegateInvokeMethod; 9746void reportBadDelegateReturn(BindingDiagnosticBag bag, MethodSymbol targetInvokeMethod, MethodSymbol sourceInvokeMethod, bool topLevel, Location location) 9753void reportBadDelegateParameter(BindingDiagnosticBag bag, MethodSymbol sourceInvokeMethod, MethodSymbol targetInvokeMethod, ParameterSymbol parameterSymbol, bool topLevel, Location location) 9869var method = conversion.Method; 9886static (MethodSymbol invokeSignature, ImmutableArray<ParameterSymbol>) getDelegateOrFunctionPointerInfo(TypeSymbol targetType) 10466var method = conversion.Method; 10550private TypeWithState GetConversionReturnTypeWithState(MethodSymbol method, bool isLiftedConversion, NullableFlowState operandState) 10623MethodSymbol factory = analysis.Operator; 10627var match = toType.ForEachUnionFactoryMethod( 10936var method = node.MethodOpt; 11066private MethodSymbol CheckMethodGroupReceiverNullability(BoundMethodGroup group, ImmutableArray<ParameterSymbol> parameters, MethodSymbol method, bool invokedAsExtensionMethod) 11076method = (MethodSymbol)AsMemberOfType(receiverType.Type, method); 11140var delegateInvokeMethod = delegateTypeOpt?.DelegateInvokeMethod; 11156private static void UseDelegateInvokeParameterAndReturnTypes(BoundLambda lambda, MethodSymbol? delegateInvokeMethod, out bool useDelegateInvokeParameterTypes, out bool useDelegateInvokeReturnType) 11458deconstructMethod = (MethodSymbol)AsMemberOfType(rightResult.Type, deconstructMethod); 11719ReinferenceResult<MethodSymbol> reinferenceResult = ReInferMethodAndVisitArguments( 11779MethodSymbol? incrementOperator = (node.OperatorKind.IsUserDefined() && node.MethodOpt?.ParameterCount == 1) ? node.MethodOpt : null; 11912ReinferenceResult<MethodSymbol> reinferenceResult = ReInferMethodAndVisitArguments( 12315var getMethod = ((PropertySymbol)member.OriginalDefinition).GetMethod; 12336var getValue = (MethodSymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Nullable_T_get_Value); 12401MethodSymbol? reinferredGetEnumeratorMethod = null; 12410ReinferenceResult<MethodSymbol> reinferenceResult = ReInferMethodAndVisitArguments( 12520reinferredGetEnumeratorMethod = (MethodSymbol)AsMemberOfType(getEnumeratorType, enumeratorInfoOpt.GetEnumeratorInfo.Method); 12533var currentPropertyGetter = (MethodSymbol)AsMemberOfType(enumeratorReturnType.Type, enumeratorInfoOpt.CurrentPropertyGetter); 12542var moveNextAsyncMethod = (MethodSymbol)AsMemberOfType(reinferredGetEnumeratorMethod.ReturnType, enumeratorInfoOpt.MoveNextInfo.Method); 12553var patternDisposeMethod = enumeratorInfoOpt.PatternDisposeInfo?.Method; 12556patternDisposeMethod = (MethodSymbol)AsMemberOfType(reinferredGetEnumeratorMethod.ReturnType, patternDisposeMethod); 12761node.MethodOpt is MethodSymbol method && 12806private MethodSymbol ReInferUnaryOperator(SyntaxNode syntax, MethodSymbol method, BoundExpression operand, TypeWithState operandType) 12810method = (MethodSymbol)AsMemberOfType(operandType.Type!.StrippedType(), method); 12983MethodSymbol logicalOperator = binary.LogicalOperator; 12986MethodSymbol reInferredMethod = ReInferBinaryOperator(binary.Syntax, logicalOperator, leftOperand, rightOperand, leftUnderlyingType, rightUnderlyingType); 12999MethodSymbol trueFalseOperator = isAnd ? binary.FalseOperator : binary.TrueOperator; 13002var updatedTrueFalseOperator = ReInferUnaryOperator(leftOperand.Syntax, trueFalseOperator, binary.Left, leftType); 13056var reinferredGetResult = (MethodSymbol)AsMemberOfType(_visitResult.RValueType.Type, awaitableInfo.GetResult); 13605var method = (MethodSymbol)CurrentSymbol; 14311var variables = (symbol.ContainingSymbol is MethodSymbol containingMethod ? _variables.GetVariablesForMethodScope(containingMethod) : null) ??
FlowAnalysis\NullableWalker.Variables.cs (4)
213internal Variables CreateNestedMethodScope(MethodSymbol method) 216Debug.Assert(!(method.ContainingSymbol is MethodSymbol containingMethod) || 358if (symbol.ContainingSymbol is MethodSymbol method && 396internal Variables? GetVariablesForMethodScope(MethodSymbol method)
FlowAnalysis\NullableWalker_Patterns.cs (1)
698var method = e.DeconstructMethod;
FlowAnalysis\ReadWriteWalker.cs (3)
31out IEnumerable<MethodSymbol> usedLocalFunctions) 41usedLocalFunctions = Enumerable.Empty<MethodSymbol>(); 83if (current is MethodSymbol m)
Generated\BoundNodes.xml.Generated.cs (232)
1210public BoundUnaryOperator(SyntaxNode syntax, UnaryOperatorKind operatorKind, BoundExpression operand, ConstantValue? constantValueOpt, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type, bool hasErrors = false) 1230public MethodSymbol? MethodOpt { get; } 1233public ImmutableArray<MethodSymbol> OriginalUserDefinedOperatorsOpt { get; } 1238public BoundUnaryOperator Update(UnaryOperatorKind operatorKind, BoundExpression operand, ConstantValue? constantValueOpt, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type) 1252public BoundIncrementOperator(SyntaxNode syntax, UnaryOperatorKind operatorKind, BoundExpression operand, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, BoundValuePlaceholder? operandPlaceholder, BoundExpression? operandConversion, BoundValuePlaceholder? resultPlaceholder, BoundExpression? resultConversion, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type, bool hasErrors = false) 1274public MethodSymbol? MethodOpt { get; } 1281public ImmutableArray<MethodSymbol> OriginalUserDefinedOperatorsOpt { get; } 1286public BoundIncrementOperator Update(UnaryOperatorKind operatorKind, BoundExpression operand, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, BoundValuePlaceholder? operandPlaceholder, BoundExpression? operandConversion, BoundValuePlaceholder? resultPlaceholder, BoundExpression? resultConversion, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type) 1361public BoundFunctionPointerLoad(SyntaxNode syntax, MethodSymbol targetMethod, TypeSymbol? constrainedToTypeOpt, TypeSymbol type, bool hasErrors) 1372public BoundFunctionPointerLoad(SyntaxNode syntax, MethodSymbol targetMethod, TypeSymbol? constrainedToTypeOpt, TypeSymbol type) 1383public MethodSymbol TargetMethod { get; } 1390public BoundFunctionPointerLoad Update(MethodSymbol targetMethod, TypeSymbol? constrainedToTypeOpt, TypeSymbol type) 1510public BoundRefTypeOperator(SyntaxNode syntax, BoundExpression operand, MethodSymbol? getTypeFromHandle, TypeSymbol type, bool hasErrors = false) 1523public MethodSymbol? GetTypeFromHandle { get; } 1528public BoundRefTypeOperator Update(BoundExpression operand, MethodSymbol? getTypeFromHandle, TypeSymbol type) 1604public BoundFromEndIndexExpression(SyntaxNode syntax, BoundExpression operand, MethodSymbol? methodOpt, TypeSymbol type, bool hasErrors = false) 1617public MethodSymbol? MethodOpt { get; } 1622public BoundFromEndIndexExpression Update(BoundExpression operand, MethodSymbol? methodOpt, TypeSymbol type) 1636public BoundRangeExpression(SyntaxNode syntax, BoundExpression? leftOperandOpt, BoundExpression? rightOperandOpt, MethodSymbol? methodOpt, TypeSymbol type, bool hasErrors = false) 1650public MethodSymbol? MethodOpt { get; } 1655public BoundRangeExpression Update(BoundExpression? leftOperandOpt, BoundExpression? rightOperandOpt, MethodSymbol? methodOpt, TypeSymbol type) 1764public BoundUserDefinedConditionalLogicalOperator(SyntaxNode syntax, BinaryOperatorKind operatorKind, MethodSymbol logicalOperator, MethodSymbol trueOperator, MethodSymbol falseOperator, BoundValuePlaceholder? trueFalseOperandPlaceholder, BoundExpression? trueFalseOperandConversion, TypeSymbol? constrainedToTypeOpt, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, BoundExpression left, BoundExpression right, TypeSymbol type, bool hasErrors = false) 1791public MethodSymbol LogicalOperator { get; } 1792public MethodSymbol TrueOperator { get; } 1793public MethodSymbol FalseOperator { get; } 1798public ImmutableArray<MethodSymbol> OriginalUserDefinedOperatorsOpt { get; } 1803public BoundUserDefinedConditionalLogicalOperator Update(BinaryOperatorKind operatorKind, MethodSymbol logicalOperator, MethodSymbol trueOperator, MethodSymbol falseOperator, BoundValuePlaceholder? trueFalseOperandPlaceholder, BoundExpression? trueFalseOperandConversion, TypeSymbol? constrainedToTypeOpt, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, BoundExpression left, BoundExpression right, TypeSymbol type) 1817public BoundCompoundAssignmentOperator(SyntaxNode syntax, BinaryOperatorSignature @operator, BoundExpression left, BoundExpression right, BoundValuePlaceholder? leftPlaceholder, BoundExpression? leftConversion, BoundValuePlaceholder? finalPlaceholder, BoundExpression? finalConversion, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type, bool hasErrors = false) 1845public ImmutableArray<MethodSymbol> OriginalUserDefinedOperatorsOpt { get; } 1850public BoundCompoundAssignmentOperator Update(BinaryOperatorSignature @operator, BoundExpression left, BoundExpression right, BoundValuePlaceholder? leftPlaceholder, BoundExpression? leftConversion, BoundValuePlaceholder? finalPlaceholder, BoundExpression? finalConversion, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type) 2180public BoundAwaitableInfo(SyntaxNode syntax, BoundAwaitableValuePlaceholder? awaitableInstancePlaceholder, bool isDynamic, BoundExpression? getAwaiter, PropertySymbol? isCompleted, MethodSymbol? getResult, BoundCall? runtimeAsyncAwaitCall, BoundAwaitableValuePlaceholder? runtimeAsyncAwaitCallPlaceholder, bool hasErrors = false) 2200public MethodSymbol? GetResult { get; } 2207public BoundAwaitableInfo Update(BoundAwaitableValuePlaceholder? awaitableInstancePlaceholder, bool isDynamic, BoundExpression? getAwaiter, PropertySymbol? isCompleted, MethodSymbol? getResult, BoundCall? runtimeAsyncAwaitCall, BoundAwaitableValuePlaceholder? runtimeAsyncAwaitCallPlaceholder) 2256protected BoundTypeOf(BoundKind kind, SyntaxNode syntax, MethodSymbol? getTypeFromHandle, TypeSymbol type, bool hasErrors) 2265protected BoundTypeOf(BoundKind kind, SyntaxNode syntax, MethodSymbol? getTypeFromHandle, TypeSymbol type) 2275public MethodSymbol? GetTypeFromHandle { get; } 2280public BoundTypeOfOperator(SyntaxNode syntax, BoundTypeExpression sourceType, MethodSymbol? getTypeFromHandle, TypeSymbol type, bool hasErrors = false) 2295public BoundTypeOfOperator Update(BoundTypeExpression sourceType, MethodSymbol? getTypeFromHandle, TypeSymbol type) 2341public BoundMethodDefIndex(SyntaxNode syntax, MethodSymbol method, TypeSymbol type, bool hasErrors) 2355public BoundMethodDefIndex(SyntaxNode syntax, MethodSymbol method, TypeSymbol type) 2366public MethodSymbol Method { get; } 2371public BoundMethodDefIndex Update(MethodSymbol method, TypeSymbol type) 2759public BoundMethodInfo(SyntaxNode syntax, MethodSymbol method, MethodSymbol? getMethodFromHandle, TypeSymbol type, bool hasErrors) 2770public BoundMethodInfo(SyntaxNode syntax, MethodSymbol method, MethodSymbol? getMethodFromHandle, TypeSymbol type) 2782public MethodSymbol Method { get; } 2783public MethodSymbol? GetMethodFromHandle { get; } 2788public BoundMethodInfo Update(MethodSymbol method, MethodSymbol? getMethodFromHandle, TypeSymbol type) 2802public BoundFieldInfo(SyntaxNode syntax, FieldSymbol field, MethodSymbol? getFieldFromHandle, TypeSymbol type, bool hasErrors) 2813public BoundFieldInfo(SyntaxNode syntax, FieldSymbol field, MethodSymbol? getFieldFromHandle, TypeSymbol type) 2826public MethodSymbol? GetFieldFromHandle { get; } 2831public BoundFieldInfo Update(FieldSymbol field, MethodSymbol? getFieldFromHandle, TypeSymbol type) 3051public BoundReadOnlySpanFromArray(SyntaxNode syntax, BoundExpression operand, MethodSymbol conversionMethod, TypeSymbol type, bool hasErrors = false) 3065public MethodSymbol ConversionMethod { get; } 3070public BoundReadOnlySpanFromArray Update(BoundExpression operand, MethodSymbol conversionMethod, TypeSymbol type) 3150public BoundFixedLocalCollectionInitializer(SyntaxNode syntax, TypeSymbol elementPointerType, BoundValuePlaceholder? elementPointerPlaceholder, BoundExpression? elementPointerConversion, BoundExpression expression, MethodSymbol? getPinnableOpt, TypeSymbol type, bool hasErrors = false) 3170public MethodSymbol? GetPinnableOpt { get; } 3175public BoundFixedLocalCollectionInitializer Update(TypeSymbol elementPointerType, BoundValuePlaceholder? elementPointerPlaceholder, BoundExpression? elementPointerConversion, BoundExpression expression, MethodSymbol? getPinnableOpt, TypeSymbol type) 3360public BoundBlock(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, ImmutableArray<MethodSymbol> localFunctions, bool hasUnsafeModifier, BoundBlockInstrumentation? instrumentation, ImmutableArray<BoundStatement> statements, bool hasErrors = false) 3375public ImmutableArray<MethodSymbol> LocalFunctions { get; } 3382public BoundBlock Update(ImmutableArray<LocalSymbol> locals, ImmutableArray<MethodSymbol> localFunctions, bool hasUnsafeModifier, BoundBlockInstrumentation? instrumentation, ImmutableArray<BoundStatement> statements) 3562public BoundLocalFunctionStatement(SyntaxNode syntax, MethodSymbol symbol, BoundBlock? blockBody, BoundBlock? expressionBody, bool hasErrors = false) 3573public MethodSymbol Symbol { get; } 3580public BoundLocalFunctionStatement Update(MethodSymbol symbol, BoundBlock? blockBody, BoundBlock? expressionBody) 3830public BoundSwitchStatement(SyntaxNode syntax, BoundExpression expression, ImmutableArray<LocalSymbol> innerLocals, ImmutableArray<MethodSymbol> innerLocalFunctions, ImmutableArray<BoundSwitchSection> switchSections, BoundDecisionDag reachabilityDecisionDag, BoundSwitchLabel? defaultLabel, LabelSymbol breakLabel, bool hasErrors = false) 3852public ImmutableArray<MethodSymbol> InnerLocalFunctions { get; } 3861public BoundSwitchStatement Update(BoundExpression expression, ImmutableArray<LocalSymbol> innerLocals, ImmutableArray<MethodSymbol> innerLocalFunctions, ImmutableArray<BoundSwitchSection> switchSections, BoundDecisionDag reachabilityDecisionDag, BoundSwitchLabel? defaultLabel, LabelSymbol breakLabel) 5446public BoundDagDeconstructEvaluation(SyntaxNode syntax, MethodSymbol deconstructMethod, BoundDagTemp input, bool hasErrors = false) 5456public MethodSymbol DeconstructMethod { get; } 5461public BoundDagDeconstructEvaluation Update(MethodSymbol deconstructMethod, BoundDagTemp input) 5983public BoundDynamicInvocation(SyntaxNode syntax, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, ImmutableArray<MethodSymbol> applicableMethods, BoundExpression expression, ImmutableArray<BoundExpression> arguments, TypeSymbol type, bool hasErrors = false) 6000public ImmutableArray<MethodSymbol> ApplicableMethods { get; } 6005public BoundDynamicInvocation Update(ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, ImmutableArray<MethodSymbol> applicableMethods, BoundExpression expression, ImmutableArray<BoundExpression> arguments, TypeSymbol type) 6052public BoundLoweredConditionalAccess(SyntaxNode syntax, BoundExpression receiver, MethodSymbol? hasValueMethodOpt, BoundExpression whenNotNull, BoundExpression? whenNullOpt, int id, bool forceCopyOfNullableValueType, TypeSymbol type, bool hasErrors = false) 6070public MethodSymbol? HasValueMethodOpt { get; } 6079public BoundLoweredConditionalAccess Update(BoundExpression receiver, MethodSymbol? hasValueMethodOpt, BoundExpression whenNotNull, BoundExpression? whenNullOpt, int id, bool forceCopyOfNullableValueType, TypeSymbol type) 6164public BoundMethodGroup(SyntaxNode syntax, ImmutableArray<TypeWithAnnotations> typeArgumentsOpt, string name, ImmutableArray<MethodSymbol> methods, Symbol? lookupSymbolOpt, DiagnosticInfo? lookupError, BoundMethodGroupFlags? flags, FunctionTypeSymbol? functionType, BoundExpression? receiverOpt, LookupResultKind resultKind, bool hasErrors = false) 6182public ImmutableArray<MethodSymbol> Methods { get; } 6191public BoundMethodGroup Update(ImmutableArray<TypeWithAnnotations> typeArgumentsOpt, string name, ImmutableArray<MethodSymbol> methods, Symbol? lookupSymbolOpt, DiagnosticInfo? lookupError, BoundMethodGroupFlags? flags, FunctionTypeSymbol? functionType, BoundExpression? receiverOpt, LookupResultKind resultKind) 6233public BoundCall(SyntaxNode syntax, BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, MethodSymbol method, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool isDelegateCall, bool expanded, bool invokedAsExtensionMethod, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalMethodsOpt, TypeSymbol type, bool hasErrors = false) 6263public MethodSymbol Method { get; } 6273public ImmutableArray<MethodSymbol> OriginalMethodsOpt { get; } 6278public BoundCall Update(BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, MethodSymbol method, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool isDelegateCall, bool expanded, bool invokedAsExtensionMethod, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalMethodsOpt, TypeSymbol type) 6331public BoundAttribute(SyntaxNode syntax, MethodSymbol? constructor, ImmutableArray<BoundExpression> constructorArguments, ImmutableArray<string?> constructorArgumentNamesOpt, ImmutableArray<int> constructorArgumentsToParamsOpt, bool constructorExpanded, BitVector constructorDefaultArguments, ImmutableArray<BoundAssignmentOperator> namedArguments, LookupResultKind resultKind, TypeSymbol type, bool hasErrors = false) 6350public MethodSymbol? Constructor { get; } 6362public BoundAttribute Update(MethodSymbol? constructor, ImmutableArray<BoundExpression> constructorArguments, ImmutableArray<string?> constructorArgumentNamesOpt, ImmutableArray<int> constructorArgumentsToParamsOpt, bool constructorExpanded, BitVector constructorDefaultArguments, ImmutableArray<BoundAssignmentOperator> namedArguments, LookupResultKind resultKind, TypeSymbol type) 6435public BoundObjectCreationExpression(SyntaxNode syntax, MethodSymbol constructor, ImmutableArray<MethodSymbol> constructorsGroup, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, ConstantValue? constantValueOpt, BoundObjectInitializerExpressionBase? initializerExpressionOpt, bool wasTargetTyped, TypeSymbol type, bool hasErrors = false) 6457public override MethodSymbol Constructor { get; } 6458public ImmutableArray<MethodSymbol> ConstructorsGroup { get; } 6472public BoundObjectCreationExpression Update(MethodSymbol constructor, ImmutableArray<MethodSymbol> constructorsGroup, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, ConstantValue? constantValueOpt, BoundObjectInitializerExpressionBase? initializerExpressionOpt, bool wasTargetTyped, TypeSymbol type) 6565public BoundCollectionExpression(SyntaxNode syntax, CollectionExpressionTypeKind collectionTypeKind, BoundObjectOrCollectionValuePlaceholder? placeholder, BoundExpression? collectionCreation, MethodSymbol? collectionBuilderMethod, BoundCollectionBuilderElementsPlaceholder? collectionBuilderElementsPlaceholder, bool wasTargetTyped, bool hasWithElement, BoundUnconvertedCollectionExpression unconvertedCollectionExpression, ImmutableArray<BoundNode> elements, TypeSymbol type, bool hasErrors = false) 6591public MethodSymbol? CollectionBuilderMethod { get; } 6600public BoundCollectionExpression Update(CollectionExpressionTypeKind collectionTypeKind, BoundObjectOrCollectionValuePlaceholder? placeholder, BoundExpression? collectionCreation, MethodSymbol? collectionBuilderMethod, BoundCollectionBuilderElementsPlaceholder? collectionBuilderElementsPlaceholder, bool wasTargetTyped, bool hasWithElement, BoundUnconvertedCollectionExpression unconvertedCollectionExpression, ImmutableArray<BoundNode> elements, TypeSymbol type) 6757public BoundDynamicObjectCreationExpression(SyntaxNode syntax, string name, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, BoundObjectInitializerExpressionBase? initializerExpressionOpt, ImmutableArray<MethodSymbol> applicableMethods, bool wasTargetTyped, TypeSymbol type, bool hasErrors = false) 6780public ImmutableArray<MethodSymbol> ApplicableMethods { get; } 6786public BoundDynamicObjectCreationExpression Update(string name, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, BoundObjectInitializerExpressionBase? initializerExpressionOpt, ImmutableArray<MethodSymbol> applicableMethods, bool wasTargetTyped, TypeSymbol type) 7001public BoundCollectionElementInitializer(SyntaxNode syntax, MethodSymbol addMethod, ImmutableArray<BoundExpression> arguments, BoundExpression? implicitReceiverOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, bool invokedAsExtensionMethod, LookupResultKind resultKind, TypeSymbol type, bool hasErrors = false) 7020public MethodSymbol AddMethod { get; } 7032public BoundCollectionElementInitializer Update(MethodSymbol addMethod, ImmutableArray<BoundExpression> arguments, BoundExpression? implicitReceiverOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, bool invokedAsExtensionMethod, LookupResultKind resultKind, TypeSymbol type) 7046public BoundDynamicCollectionElementInitializer(SyntaxNode syntax, ImmutableArray<MethodSymbol> applicableMethods, BoundExpression expression, ImmutableArray<BoundExpression> arguments, TypeSymbol type, bool hasErrors = false) 7059public ImmutableArray<MethodSymbol> ApplicableMethods { get; } 7064public BoundDynamicCollectionElementInitializer Update(ImmutableArray<MethodSymbol> applicableMethods, BoundExpression expression, ImmutableArray<BoundExpression> arguments, TypeSymbol type) 7113public BoundAnonymousObjectCreationExpression(SyntaxNode syntax, MethodSymbol constructor, ImmutableArray<BoundExpression> arguments, ImmutableArray<BoundAnonymousPropertyDeclaration> declarations, TypeSymbol type, bool hasErrors = false) 7128public MethodSymbol Constructor { get; } 7135public BoundAnonymousObjectCreationExpression Update(MethodSymbol constructor, ImmutableArray<BoundExpression> arguments, ImmutableArray<BoundAnonymousPropertyDeclaration> declarations, TypeSymbol type) 7219public BoundDelegateCreationExpression(SyntaxNode syntax, BoundExpression argument, MethodSymbol? methodOpt, bool isExtensionMethod, bool wasTargetTyped, TypeSymbol type, bool hasErrors = false) 7234public MethodSymbol? MethodOpt { get; } 7241public BoundDelegateCreationExpression Update(BoundExpression argument, MethodSymbol? methodOpt, bool isExtensionMethod, bool wasTargetTyped, TypeSymbol type) 7728public BoundLambda(SyntaxNode syntax, UnboundLambda unboundLambda, MethodSymbol symbol, BoundBlock body, ReadOnlyBindingDiagnostic<AssemblySymbol> diagnostics, Binder binder, TypeSymbol? type, bool hasErrors = false) 7745public MethodSymbol Symbol { get; } 7754public BoundLambda Update(UnboundLambda unboundLambda, MethodSymbol symbol, BoundBlock body, ReadOnlyBindingDiagnostic<AssemblySymbol> diagnostics, Binder binder, TypeSymbol? type) 8339public BoundRecursivePattern(SyntaxNode syntax, BoundTypeExpression? declaredType, MethodSymbol? deconstructMethod, ImmutableArray<BoundPositionalSubpattern> deconstruction, ImmutableArray<BoundPropertySubpattern> properties, bool isExplicitNotNullTest, Symbol? variable, BoundExpression? variableAccess, bool isUnionMatching, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false) 8358public MethodSymbol? DeconstructMethod { get; } 8366public BoundRecursivePattern Update(BoundTypeExpression? declaredType, MethodSymbol? deconstructMethod, ImmutableArray<BoundPositionalSubpattern> deconstruction, ImmutableArray<BoundPropertySubpattern> properties, bool isExplicitNotNullTest, Symbol? variable, BoundExpression? variableAccess, bool isUnionMatching, TypeSymbol inputType, TypeSymbol narrowedType) 8463public BoundITuplePattern(SyntaxNode syntax, MethodSymbol getLengthMethod, MethodSymbol getItemMethod, ImmutableArray<BoundPositionalSubpattern> subpatterns, bool isUnionMatching, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false) 8483public MethodSymbol GetLengthMethod { get; } 8484public MethodSymbol GetItemMethod { get; } 8491public BoundITuplePattern Update(MethodSymbol getLengthMethod, MethodSymbol getItemMethod, ImmutableArray<BoundPositionalSubpattern> subpatterns, bool isUnionMatching, TypeSymbol inputType, TypeSymbol narrowedType) 9056public BoundWithExpression(SyntaxNode syntax, BoundExpression receiver, MethodSymbol? cloneMethod, BoundObjectInitializerExpressionBase initializerExpression, TypeSymbol type, bool hasErrors = false) 9071public MethodSymbol? CloneMethod { get; } 9077public BoundWithExpression Update(BoundExpression receiver, MethodSymbol? cloneMethod, BoundObjectInitializerExpressionBase initializerExpression, TypeSymbol type) 11259MethodSymbol? methodOpt = this.VisitMethodSymbol(node.MethodOpt); 11260ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt = this.VisitSymbols<MethodSymbol>(node.OriginalUserDefinedOperatorsOpt); 11268MethodSymbol? methodOpt = this.VisitMethodSymbol(node.MethodOpt); 11269ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt = this.VisitSymbols<MethodSymbol>(node.OriginalUserDefinedOperatorsOpt); 11293MethodSymbol targetMethod = this.VisitMethodSymbol(node.TargetMethod); 11320MethodSymbol? getTypeFromHandle = this.VisitMethodSymbol(node.GetTypeFromHandle); 11339MethodSymbol? methodOpt = this.VisitMethodSymbol(node.MethodOpt); 11346MethodSymbol? methodOpt = this.VisitMethodSymbol(node.MethodOpt); 11368MethodSymbol logicalOperator = this.VisitMethodSymbol(node.LogicalOperator); 11369MethodSymbol trueOperator = this.VisitMethodSymbol(node.TrueOperator); 11370MethodSymbol falseOperator = this.VisitMethodSymbol(node.FalseOperator); 11371ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt = this.VisitSymbols<MethodSymbol>(node.OriginalUserDefinedOperatorsOpt); 11382ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt = this.VisitSymbols<MethodSymbol>(node.OriginalUserDefinedOperatorsOpt); 11461MethodSymbol? getResult = this.VisitMethodSymbol(node.GetResult); 11477MethodSymbol? getTypeFromHandle = this.VisitMethodSymbol(node.GetTypeFromHandle); 11491MethodSymbol method = this.VisitMethodSymbol(node.Method); 11551MethodSymbol method = this.VisitMethodSymbol(node.Method); 11552MethodSymbol? getMethodFromHandle = this.VisitMethodSymbol(node.GetMethodFromHandle); 11559MethodSymbol? getFieldFromHandle = this.VisitMethodSymbol(node.GetFieldFromHandle); 11604MethodSymbol conversionMethod = this.VisitMethodSymbol(node.ConversionMethod); 11622MethodSymbol? getPinnableOpt = this.VisitMethodSymbol(node.GetPinnableOpt); 11646ImmutableArray<MethodSymbol> localFunctions = this.VisitDeclaredLocalFunctions(node.LocalFunctions); 11684MethodSymbol symbol = this.VisitMethodSymbol(node.Symbol); 11724ImmutableArray<MethodSymbol> innerLocalFunctions = this.VisitDeclaredLocalFunctions(node.InnerLocalFunctions); 12017MethodSymbol deconstructMethod = this.VisitMethodSymbol(node.DeconstructMethod); 12120ImmutableArray<MethodSymbol> applicableMethods = this.VisitSymbols<MethodSymbol>(node.ApplicableMethods); 12135MethodSymbol? hasValueMethodOpt = this.VisitMethodSymbol(node.HasValueMethodOpt); 12156ImmutableArray<MethodSymbol> methods = this.VisitSymbols<MethodSymbol>(node.Methods); 12172MethodSymbol method = this.VisitMethodSymbol(node.Method); 12173ImmutableArray<MethodSymbol> originalMethodsOpt = this.VisitSymbols<MethodSymbol>(node.OriginalMethodsOpt); 12189MethodSymbol? constructor = this.VisitMethodSymbol(node.Constructor); 12203MethodSymbol constructor = this.VisitMethodSymbol(node.Constructor); 12204ImmutableArray<MethodSymbol> constructorsGroup = this.VisitSymbols<MethodSymbol>(node.ConstructorsGroup); 12224MethodSymbol? collectionBuilderMethod = this.VisitMethodSymbol(node.CollectionBuilderMethod); 12263ImmutableArray<MethodSymbol> applicableMethods = this.VisitSymbols<MethodSymbol>(node.ApplicableMethods); 12305MethodSymbol addMethod = this.VisitMethodSymbol(node.AddMethod); 12313ImmutableArray<MethodSymbol> applicableMethods = this.VisitSymbols<MethodSymbol>(node.ApplicableMethods); 12326MethodSymbol constructor = this.VisitMethodSymbol(node.Constructor); 12346MethodSymbol? methodOpt = this.VisitMethodSymbol(node.MethodOpt); 12444MethodSymbol symbol = this.VisitMethodSymbol(node.Symbol); 12551MethodSymbol? deconstructMethod = this.VisitMethodSymbol(node.DeconstructMethod); 12586MethodSymbol getLengthMethod = this.VisitMethodSymbol(node.GetLengthMethod); 12587MethodSymbol getItemMethod = this.VisitMethodSymbol(node.GetItemMethod); 12700MethodSymbol? cloneMethod = this.VisitMethodSymbol(node.CloneMethod); 13019MethodSymbol? methodOpt = GetUpdatedSymbol(node, node.MethodOpt); 13021ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt = GetUpdatedArray(node, node.OriginalUserDefinedOperatorsOpt); 13039MethodSymbol? methodOpt = GetUpdatedSymbol(node, node.MethodOpt); 13041ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt = GetUpdatedArray(node, node.OriginalUserDefinedOperatorsOpt); 13097MethodSymbol targetMethod = GetUpdatedSymbol(node, node.TargetMethod); 13168MethodSymbol? getTypeFromHandle = GetUpdatedSymbol(node, node.GetTypeFromHandle); 13220MethodSymbol? methodOpt = GetUpdatedSymbol(node, node.MethodOpt); 13238MethodSymbol? methodOpt = GetUpdatedSymbol(node, node.MethodOpt); 13441MethodSymbol? getResult = GetUpdatedSymbol(node, node.GetResult); 13469MethodSymbol? getTypeFromHandle = GetUpdatedSymbol(node, node.GetTypeFromHandle); 13495MethodSymbol method = GetUpdatedSymbol(node, node.Method); 13644MethodSymbol method = GetUpdatedSymbol(node, node.Method); 13645MethodSymbol? getMethodFromHandle = GetUpdatedSymbol(node, node.GetMethodFromHandle); 13663MethodSymbol? getFieldFromHandle = GetUpdatedSymbol(node, node.GetFieldFromHandle); 13781MethodSymbol conversionMethod = GetUpdatedSymbol(node, node.ConversionMethod); 13829MethodSymbol? getPinnableOpt = GetUpdatedSymbol(node, node.GetPinnableOpt); 13850ImmutableArray<MethodSymbol> localFunctions = GetUpdatedArray(node, node.LocalFunctions); 13881MethodSymbol symbol = GetUpdatedSymbol(node, node.Symbol); 13890ImmutableArray<MethodSymbol> innerLocalFunctions = GetUpdatedArray(node, node.InnerLocalFunctions); 14170MethodSymbol deconstructMethod = GetUpdatedSymbol(node, node.DeconstructMethod); 14300ImmutableArray<MethodSymbol> applicableMethods = GetUpdatedArray(node, node.ApplicableMethods); 14337MethodSymbol? hasValueMethodOpt = GetUpdatedSymbol(node, node.HasValueMethodOpt); 14387ImmutableArray<MethodSymbol> methods = GetUpdatedArray(node, node.Methods); 14425MethodSymbol method = GetUpdatedSymbol(node, node.Method); 14426ImmutableArray<MethodSymbol> originalMethodsOpt = GetUpdatedArray(node, node.OriginalMethodsOpt); 14464MethodSymbol? constructor = GetUpdatedSymbol(node, node.Constructor); 14500MethodSymbol constructor = GetUpdatedSymbol(node, node.Constructor); 14501ImmutableArray<MethodSymbol> constructorsGroup = GetUpdatedArray(node, node.ConstructorsGroup); 14538MethodSymbol? collectionBuilderMethod = GetUpdatedSymbol(node, node.CollectionBuilderMethod); 14607ImmutableArray<MethodSymbol> applicableMethods = GetUpdatedArray(node, node.ApplicableMethods); 14715MethodSymbol addMethod = GetUpdatedSymbol(node, node.AddMethod); 14734ImmutableArray<MethodSymbol> applicableMethods = GetUpdatedArray(node, node.ApplicableMethods); 14765MethodSymbol constructor = GetUpdatedSymbol(node, node.Constructor); 14818MethodSymbol? methodOpt = GetUpdatedSymbol(node, node.MethodOpt); 15037MethodSymbol symbol = GetUpdatedSymbol(node, node.Symbol); 15243MethodSymbol? deconstructMethod = GetUpdatedSymbol(node, node.DeconstructMethod); 15281MethodSymbol getLengthMethod = GetUpdatedSymbol(node, node.GetLengthMethod); 15282MethodSymbol getItemMethod = GetUpdatedSymbol(node, node.GetItemMethod); 15454MethodSymbol? cloneMethod = GetUpdatedSymbol(node, node.CloneMethod);
Lowering\AsyncRewriter\AsyncExceptionHandlerRewriter.cs (7)
34MethodSymbol containingMethod, 111MethodSymbol containingSymbol, 481var exceptionDispatchInfoCapture = _F.WellKnownMethod(WellKnownMember.System_Runtime_ExceptionServices_ExceptionDispatchInfo__Capture, isOptional: true); 482var exceptionDispatchInfoThrow = _F.WellKnownMethod(WellKnownMember.System_Runtime_ExceptionServices_ExceptionDispatchInfo__Throw, isOptional: true); 780var oldContainingSymbol = _F.CurrentFunction; 806var oldContainingSymbol = _F.CurrentFunction; 1071MethodSymbol containingMethod,
Lowering\AsyncRewriter\AsyncIteratorInfo.cs (4)
29internal MethodSymbol SetResultMethod { get; } 32internal MethodSymbol SetExceptionMethod { get; } 35MethodSymbol setResultMethod, MethodSymbol setExceptionMethod)
Lowering\AsyncRewriter\AsyncIteratorMethodToStateMachineRewriter.cs (1)
48MethodSymbol method,
Lowering\AsyncRewriter\AsyncMethodBuilderMemberCollection.cs (33)
44internal readonly MethodSymbol CreateBuilder; 49internal readonly MethodSymbol SetException; 54internal readonly MethodSymbol SetResult; 59internal readonly MethodSymbol AwaitOnCompleted; 64internal readonly MethodSymbol AwaitUnsafeOnCompleted; 69internal readonly MethodSymbol Start; 74internal readonly MethodSymbol SetStateMachine; 89MethodSymbol createBuilder, 90MethodSymbol setException, 91MethodSymbol setResult, 92MethodSymbol awaitOnCompleted, 93MethodSymbol awaitUnsafeOnCompleted, 94MethodSymbol start, 95MethodSymbol setStateMachine, 112internal static bool TryCreate(SyntheticBoundNodeFactory F, MethodSymbol method, TypeMap typeMap, out AsyncMethodBuilderMemberCollection collection) 119TryGetBuilderMember<MethodSymbol>( 124out MethodSymbol createBuilderMethod); 152MethodSymbol createBuilderMethod; 154TryGetBuilderMember<MethodSymbol>( 186MethodSymbol createBuilderMethod = null; 215TryGetBuilderMember<MethodSymbol>( 267MethodSymbol createBuilderMethod = null; 298TryGetBuilderMember<MethodSymbol>( 376MethodSymbol createBuilderMethod, 386MethodSymbol setExceptionMethod; 387MethodSymbol setResultMethod; 388MethodSymbol awaitOnCompletedMethod; 389MethodSymbol awaitUnsafeOnCompletedMethod; 390MethodSymbol startMethod; 391MethodSymbol setStateMachineMethod; 469private static MethodSymbol GetCustomCreateMethod( 483var method = (MethodSymbol)member;
Lowering\AsyncRewriter\AsyncMethodToStateMachineRewriter.cs (8)
27protected readonly MethodSymbol _method; 72MethodSymbol method, 141internal void GenerateMoveNext(BoundStatement body, MethodSymbol moveNextMethod) 366MethodSymbol getResult = VisitMethodSymbol(node.AwaitableInfo.GetResult); 367MethodSymbol isCompletedMethod = ((object)node.AwaitableInfo.IsCompleted != null) ? VisitMethodSymbol(node.AwaitableInfo.IsCompleted.GetMethod) : null; 422MethodSymbol methodSymbol = null, 449private BoundExpression GenerateGetIsCompleted(LocalSymbol awaiterTemp, MethodSymbol getIsCompletedMethod) 651var onCompleted = (useUnsafeOnCompleted ?
Lowering\AsyncRewriter\AsyncRewriter.AsyncIteratorRewriter.cs (33)
36MethodSymbol method, 210protected override BoundStatement InitializeParameterField(MethodSymbol getEnumeratorMethod, ParameterSymbol parameter, BoundExpression resultParameter, BoundExpression parameterProxy) 302MethodSymbol IAsyncEnumerableOfElementType_MoveNextAsync = F.WellKnownMethod(WellKnownMember.System_Collections_Generic_IAsyncEnumerator_T__MoveNextAsync) 307MethodSymbol promise_GetStatus = F.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_ManualResetValueTaskSourceCore_T__GetStatus) 310MethodSymbol promise_GetResult = F.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_ManualResetValueTaskSourceCore_T__GetResult) 315MethodSymbol valueTaskT_ctorValue = F.WellKnownMethod(WellKnownMember.System_Threading_Tasks_ValueTask_T__ctorValue) 318MethodSymbol valueTaskT_ctor = F.WellKnownMethod(WellKnownMember.System_Threading_Tasks_ValueTask_T__ctorSourceAndToken) 328out MethodSymbol promise_get_Version); 369out BoundExpressionStatement startCall, out MethodSymbol promise_get_Version) 379var resetMethod = (MethodSymbol)F.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_ManualResetValueTaskSourceCore_T__Reset, isOptional: true) 386MethodSymbol startMethod = _asyncMethodBuilderMemberCollection.Start.Construct(this.stateMachineType); 427MethodSymbol IAsyncDisposable_DisposeAsync = F.WellKnownMethod(WellKnownMember.System_IAsyncDisposable__DisposeAsync); 438out MethodSymbol promise_get_Version); 452MethodSymbol valueTask_ctor = 482MethodSymbol IAsyncEnumerableOfElementType_get_Current = 500MethodSymbol IValueTaskSourceOfBool_GetResult = 504MethodSymbol promise_GetResult = 525MethodSymbol IValueTaskSourceOfBool_GetStatus = 529MethodSymbol promise_GetStatus = 551MethodSymbol IValueTaskSourceOfBool_OnCompleted = 555MethodSymbol promise_OnCompleted = 579MethodSymbol IValueTaskSource_GetResult = 582MethodSymbol promise_GetResult = 603MethodSymbol IValueTaskSource_GetStatus = 606MethodSymbol promise_GetStatus = 626MethodSymbol IValueTaskSource_OnCompleted = F.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_IValueTaskSource__OnCompleted); 628MethodSymbol promise_OnCompleted = 655MethodSymbol IAsyncEnumerableOfElementType_GetEnumerator = 684MethodSymbol setResultMethod = F.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_ManualResetValueTaskSourceCore_T__SetResult, isOptional: true); 687setResultMethod = (MethodSymbol)setResultMethod.SymbolAsMember((NamedTypeSymbol)_promiseOfValueOrEndField.Type); 690MethodSymbol setExceptionMethod = F.WellKnownMethod(WellKnownMember.System_Threading_Tasks_Sources_ManualResetValueTaskSourceCore_T__SetException, isOptional: true); 693setExceptionMethod = (MethodSymbol)setExceptionMethod.SymbolAsMember((NamedTypeSymbol)_promiseOfValueOrEndField.Type);
Lowering\AsyncRewriter\AsyncRewriter.cs (5)
25MethodSymbol method, 43MethodSymbol method, 153var IAsyncStateMachine_MoveNext = F.WellKnownMethod(WellKnownMember.System_Runtime_CompilerServices_IAsyncStateMachine_MoveNext); 154var IAsyncStateMachine_SetStateMachine = F.WellKnownMethod(WellKnownMember.System_Runtime_CompilerServices_IAsyncStateMachine_SetStateMachine); 255var startMethod = methodScopeAsyncMethodBuilderMemberCollection.Start.Construct(frameType);
Lowering\AsyncRewriter\AsyncStateMachine.cs (4)
21private readonly MethodSymbol _constructor; 25public AsyncStateMachine(VariableSlotAllocator variableAllocatorOpt, TypeCompilationState compilationState, MethodSymbol asyncMethod, int asyncMethodOrdinal, TypeKind typeKind) 61_constructor = isIterator ? (MethodSymbol)new IteratorConstructor(this) : new AsyncConstructor(this); 69internal override MethodSymbol Constructor
Lowering\AsyncRewriter\RuntimeAsyncRewriter.cs (4)
18MethodSymbol method, 129var runtimeAsyncAwaitMethod = runtimeAsyncAwaitCall.Method; 184var isCompletedMethod = awaitableInfo.IsCompleted.GetMethod; 200var getResultMethod = awaitableInfo.GetResult;
Lowering\BoundTreeToDifferentEnclosingContextRewriter.cs (6)
34protected abstract MethodSymbol CurrentMethod { get; } 133var getResult = VisitMethodSymbol(node.GetResult); 249public override MethodSymbol? VisitMethodSymbol(MethodSymbol? method) 271return (MethodSymbol)member; 280return ((MethodSymbol)method.OriginalDefinition)
Lowering\ClosureConversion\ClosureConversion.Analysis.cs (9)
33public readonly PooledHashSet<MethodSymbol> MethodsConvertedToDelegates; 38public bool CanTakeRefParameters(MethodSymbol function) 48private readonly MethodSymbol _topLevelMethod; 55PooledHashSet<MethodSymbol> methodsConvertedToDelegates, 56MethodSymbol topLevelMethod, 72MethodSymbol method, 78var methodsConvertedToDelegates = PooledHashSet<MethodSymbol>.GetInstance(); 649public static (NestedFunction, Scope) GetVisibleNestedFunction(Scope startingScope, MethodSymbol functionSymbol) 669public static NestedFunction GetNestedFunctionInTree(Scope treeRoot, MethodSymbol functionSymbol)
Lowering\ClosureConversion\ClosureConversion.Analysis.Tree.cs (13)
127public readonly MethodSymbol OriginalMethodSymbol; 160public NestedFunction(MethodSymbol symbol, SyntaxReference blockSyntax) 272/// <see cref="Build(BoundNode, MethodSymbol, HashSet{MethodSymbol}, DiagnosticBag)"/> 324private readonly MethodSymbol _topLevelMethod; 331private readonly HashSet<MethodSymbol> _methodsConvertedToDelegates; 351MethodSymbol topLevelMethod, 352HashSet<MethodSymbol> methodsConvertedToDelegates, 369MethodSymbol topLevelMethod, 370HashSet<MethodSymbol> methodsConvertedToDelegates, 474var method = node.MethodOpt.OriginalDefinition; 569private BoundNode? VisitNestedFunction(MethodSymbol functionSymbol, BoundBlock? body) 625if (symbol is MethodSymbol method &&
Lowering\ClosureConversion\ClosureConversion.cs (26)
63/// a (<see cref="MethodSymbol"/>, <see cref="BoundStatement"/>) pair for each generated method. 67/// (<see cref="MethodSymbol"/>, <see cref="BoundStatement"/>) pairs for additional methods that the lambda rewriter produced. 76private readonly MethodSymbol _topLevelMethod; 77private readonly MethodSymbol _substitutedSourceMethod; 100private MethodSymbol _currentMethod; 165MethodSymbol method, 167MethodSymbol substitutedSourceMethod, 208(localOrParameter as MethodSymbol)?.MethodKind == MethodKind.LocalFunction); 235MethodSymbol method, 237MethodSymbol substitutedSourceMethod, 333protected override MethodSymbol CurrentMethod 388var containingMethod = scope.ContainingFunctionOpt?.OriginalMethodSymbol ?? _topLevelMethod; 424var originalMethod = nestedFunction.OriginalMethodSymbol; 542var containingMethod = isNonGeneric ? null : (_substitutedSourceMethod ?? _topLevelMethod); 691MethodSymbol constructor = frame.Constructor.AsMember(frameType); 873var loweredSymbol = (node.Method.MethodKind is MethodKind.LambdaMethod or MethodKind.LocalFunction) ? 885MethodSymbol localFunc, 887out MethodSymbol method, 1027MethodSymbol originalMethod, 1030ref MethodSymbol synthesizedMethod, 1098out var method, 1360out var method, 1387out MethodSymbol remappedMethod, 1571var oldMethod = _currentMethod; 1618private void AddSynthesizedMethod(MethodSymbol method, BoundStatement body) 1662MethodSymbol referencedMethod = synthesizedMethod;
Lowering\ClosureConversion\ExpressionLambdaRewriter.cs (9)
392private static WellKnownMember GetBinaryOperatorFactory(BinaryOperatorKind opKind, MethodSymbol methodOpt, out bool isChecked, out bool isLifted, out bool requiresLifted) 488static bool useCheckedFactory(bool isChecked, MethodSymbol methodOpt) 494private BoundExpression VisitBinaryOperator(BinaryOperatorKind opKind, MethodSymbol methodOpt, TypeSymbol type, BoundExpression left, BoundExpression right) 574private BoundExpression MakeBinary(MethodSymbol methodOpt, TypeSymbol type, bool isLifted, bool requiresLifted, WellKnownMember opFactory, BoundExpression loweredLeft, BoundExpression loweredRight) 653var method = node.Method; 709var method = node.SymbolOpt; 767private BoundExpression DelegateCreation(BoundExpression receiver, MethodSymbol method, TypeSymbol delegateType, bool requiresInstanceReceiver) 782var createDelegate = _bound.WellKnownMethod(WellKnownMember.System_Reflection_MethodInfo__CreateDelegate, isOptional: true); 1156var getMethod = node.PropertySymbol.GetOwnOrInheritedGetMethod();
Lowering\ClosureConversion\SynthesizedClosureEnvironment.cs (6)
25internal readonly MethodSymbol TopLevelMethod; 32internal readonly MethodSymbol OriginalContainingMethodOpt; 34internal readonly MethodSymbol StaticConstructor; 40internal override MethodSymbol Constructor { get; } 47MethodSymbol topLevelMethod, 48MethodSymbol containingMethod,
Lowering\ClosureConversion\SynthesizedClosureMethod.cs (4)
22internal MethodSymbol TopLevelMethod { get; } 29MethodSymbol topLevelMethod, 31MethodSymbol originalMethod, 156private static DeclarationModifiers MakeDeclarationModifiers(ClosureKind closureKind, MethodSymbol originalMethod)
Lowering\DiagnosticsPass_ExpressionTrees.cs (13)
26private readonly MethodSymbol _containingSymbol; 31public static void IssueDiagnostics(CSharpCompilation compilation, BoundNode node, BindingDiagnosticBag diagnostics, MethodSymbol containingSymbol) 49private DiagnosticsPass(CSharpCompilation compilation, BindingDiagnosticBag diagnostics, MethodSymbol containingSymbol) 221private void CheckReferenceToMethodIfLocalFunction(BoundExpression node, MethodSymbol method) 307MethodSymbol method, 568var method = indexer.GetOwnOrInheritedGetMethod() ?? indexer.GetOwnOrInheritedSetMethod(); 610var lambda = node.Symbol; 753var binary = node.LogicalOperator; 754var unary = node.OperatorKind.Operator() == BinaryOperatorKind.And ? node.FalseOperator : node.TrueOperator; 803if (_inExpressionLambda && node.MethodOpt is MethodSymbol method && (method.IsAbstract || method.IsVirtual) && method.IsStatic) 907if (_inExpressionLambda && node.Conversion.Method is MethodSymbol method && (method.IsAbstract || method.IsVirtual) && method.IsStatic) 940private void CheckMethodGroup(BoundMethodGroup node, MethodSymbol method, bool isExtensionMethod, bool parentIsConversion, TypeSymbol convertedToType) 949if ((node.LookupSymbolOpt as MethodSymbol)?.MethodKind == MethodKind.LocalFunction)
Lowering\DiagnosticsPass_Warnings.cs (4)
235private static bool IsComCallWithRefOmitted(MethodSymbol method, ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> argumentRefKindsOpt) 252if (node.BinaryOperatorMethod is MethodSymbol method) 366MethodSymbol op = sym as MethodSymbol;
Lowering\ExtensionMethodBodyRewriter.cs (14)
32public ExtensionMethodBodyRewriter(MethodSymbol sourceMethod, SourceExtensionImplementationMethodSymbol implementationMethod) 51private (RewrittenMethodSymbol, ImmutableDictionary<Symbol, Symbol>) EnterMethod(MethodSymbol symbol, RewrittenMethodSymbol rewritten, ReadOnlySpan<ParameterSymbol> rewrittenParameters) 73private (RewrittenMethodSymbol, ImmutableDictionary<Symbol, Symbol>) EnterMethod(MethodSymbol symbol, RewrittenLambdaOrLocalFunctionSymbol rewritten) 78protected override MethodSymbol CurrentMethod => _rewrittenContainingMethod; 110MethodSymbol symbol = this.VisitMethodSymbol(node.Symbol); 129foreach (var localFunction in node.LocalFunctions) 143protected override ImmutableArray<MethodSymbol> VisitDeclaredLocalFunctions(ImmutableArray<MethodSymbol> localFunctions) 145return localFunctions.SelectAsArray(static (l, map) => (MethodSymbol)map[l], _symbolMap); 149public override MethodSymbol? VisitMethodSymbol(MethodSymbol? symbol) 154return (MethodSymbol)_symbolMap[symbol]; 159return (MethodSymbol)_symbolMap[symbol]; 162return ((MethodSymbol)_symbolMap[symbol.OriginalDefinition]).ConstructIfGeneric(TypeMap.SubstituteTypes(symbol.TypeArgumentsWithAnnotations));
Lowering\ExtensionMethodReferenceRewriter.cs (15)
92MethodSymbol method, 93ImmutableArray<MethodSymbol> originalMethodsOpt, 153private static MethodSymbol? VisitMethodSymbolWithExtensionRewrite(BoundTreeRewriter rewriter, MethodSymbol? method) 156method.OriginalDefinition.TryGetCorrespondingExtensionImplementationMethod() is MethodSymbol implementationMethod) 166public override MethodSymbol? VisitMethodSymbol(MethodSymbol? method) 202MethodSymbol method = VisitMethodSymbolWithExtensionRewrite(rewriter, node.Method); 214var methodOpt = VisitMethodSymbolWithExtensionRewrite(rewriter, node.MethodOpt); 235MethodSymbol targetMethod = VisitMethodSymbolWithExtensionRewrite(rewriter, node.TargetMethod); 252var binaryOperatorMethod = node.BinaryOperatorMethod; 253MethodSymbol? method = VisitMethodSymbolWithExtensionRewrite(rewriter, binaryOperatorMethod); 282MethodSymbol? methodOpt = VisitMethodSymbolWithExtensionRewrite(rewriter, node.MethodOpt); 283ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt = rewriter.VisitSymbols<MethodSymbol>(node.OriginalUserDefinedOperatorsOpt);
Lowering\InitializerRewriter.cs (1)
19internal static BoundTypeOrInstanceInitializers RewriteConstructor(ImmutableArray<BoundInitializer> boundInitializers, MethodSymbol method)
Lowering\Instrumentation\CodeCoverageInstrumenter.cs (16)
26private readonly MethodSymbol _method; 28private readonly MethodSymbol _createPayloadForMethodsSpanningSingleFile; 29private readonly MethodSymbol _createPayloadForMethodsSpanningMultipleFiles; 40MethodSymbol method, 63MethodSymbol createPayloadForMethodsSpanningSingleFile = GetCreatePayloadOverload( 69MethodSymbol createPayloadForMethodsSpanningMultipleFiles = GetCreatePayloadOverload( 102MethodSymbol method, 105MethodSymbol createPayloadForMethodsSpanningSingleFile, 106MethodSymbol createPayloadForMethodsSpanningMultipleFiles, 123var oldMethod = methodBodyFactory.CurrentFunction; 141private static bool IsExcludedFromCodeCoverage(MethodSymbol method) 169MethodSymbol createPayloadForMethodsSpanningSingleFile, 170MethodSymbol createPayloadForMethodsSpanningMultipleFiles, 177MethodSymbol createPayloadOverload; 564private static MethodSymbol GetCreatePayloadOverload(CSharpCompilation compilation, WellKnownMember overload, SyntaxNode syntax, BindingDiagnosticBag diagnostics) 566return (MethodSymbol)Binder.GetWellKnownTypeMember(compilation, overload, diagnostics, syntax: syntax);
Lowering\Instrumentation\CompoundInstrumenter.cs (1)
165ref MethodSymbol method,
Lowering\Instrumentation\Instrumenter.cs (1)
239ref MethodSymbol method,
Lowering\Instrumentation\LocalStateTracingInstrumenter.cs (16)
153MethodSymbol method, 204private MethodSymbol? GetLocalOrParameterStoreLogger(TypeSymbol variableType, Symbol targetSymbol, bool? refAssignmentSourceIsLocal, SyntaxNode syntax) 263var symbol = GetWellKnownMethodSymbol(overload, syntax); 268private MethodSymbol? GetWellKnownMethodSymbol(WellKnownMember overload, SyntaxNode syntax) 269=> (MethodSymbol?)Binder.GetWellKnownTypeMember(_factory.Compilation, overload, _diagnostics, syntax: syntax, isOptional: false); 271private MethodSymbol? GetSpecialMethodSymbol(SpecialMember overload, SyntaxNode syntax) 272=> (MethodSymbol?)Binder.GetSpecialTypeMember(_factory.Compilation, overload, _diagnostics, syntax: syntax); 301var currentFunction = _factory.CurrentFunction; 314var parameterLogger = GetLocalOrParameterStoreLogger(parameter.Type, parameter, refAssignmentSourceIsLocal: null, _factory.Syntax); 349var entryLogger = GetWellKnownMethodSymbol(entryOverload, _factory.Syntax); 353var returnLogger = GetWellKnownMethodSymbol(WellKnownMember.Microsoft_CodeAnalysis_Runtime_LocalStoreTracker__LogReturn, _factory.Syntax); 400var logger = GetLocalOrParameterStoreLogger(targetType, targetSymbol, refAssignmentSourceIsLocal, original.Syntax); 471var toStringMethod = GetSpecialMethodSymbol(SpecialMember.System_Object__ToString, value.Syntax); 534var logger = GetLocalOrParameterStoreLogger(targetType, targetSymbol, refAssignmentSourceIsLocal: null, original.Syntax); 555MethodSymbol method = original.Method; 612var logger = GetLocalOrParameterStoreLogger(targetType, targetSymbol, refAssignmentSourceIsLocal: null, invocation.Syntax);
Lowering\Instrumentation\ModuleCancellationInstrumenter.cs (10)
26MethodSymbol throwMethod, 31private readonly MethodSymbol _throwMethod = throwMethod; 41MethodSymbol method, 57var throwMethod = factory.WellKnownMethod(WellKnownMember.System_Threading_CancellationToken__ThrowIfCancellationRequested, isOptional: true); 119ref MethodSymbol method, 153private MethodSymbol? FindOverloadWithCancellationToken(MethodSymbol method) 162var methodDefinition = method.OriginalDefinition; 186member is MethodSymbol { Parameters: [.., { RefKind: RefKind.None, Type: { } lastParamType }] parametersWithCancellationToken } overload && 216var result = overload.AsMember(method.ContainingType);
Lowering\Instrumentation\StackOverflowProbingInstrumenter.cs (4)
16MethodSymbol ensureStackMethod, 21private readonly MethodSymbol _ensureStackMethod = ensureStackMethod; 31MethodSymbol method, 47var ensureStackMethod = factory.WellKnownMethod(WellKnownMember.System_Runtime_CompilerServices_RuntimeHelpers__EnsureSufficientExecutionStack, isOptional: true);
Lowering\IteratorRewriter\IteratorFinallyMethodSymbol.cs (2)
169public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations 171get { return ImmutableArray<MethodSymbol>.Empty; }
Lowering\IteratorRewriter\IteratorMethodToStateMachineRewriter.cs (2)
58MethodSymbol originalMethod, 400var origMethod = F.CurrentFunction;
Lowering\IteratorRewriter\IteratorRewriter.cs (10)
31MethodSymbol method, 51MethodSymbol method, 159var getter = symbol.GetMethod; 212var IDisposable_Dispose = F.SpecialMethod(SpecialMember.System_IDisposable__Dispose); 214var IEnumerator_MoveNext = F.SpecialMethod(SpecialMember.System_Collections_IEnumerator__MoveNext); 215var IEnumerator_Reset = F.SpecialMethod(SpecialMember.System_Collections_IEnumerator__Reset); 216var IEnumerator_get_Current = F.SpecialProperty(SpecialMember.System_Collections_IEnumerator__Current).GetMethod; 219var IEnumeratorOfElementType_get_Current = F.SpecialProperty(SpecialMember.System_Collections_Generic_IEnumerator_T__Current).GetMethod.AsMember(IEnumeratorOfElementType); 256var IEnumerable_GetEnumerator = F.SpecialMethod(SpecialMember.System_Collections_IEnumerable__GetEnumerator); 259var IEnumerableOfElementType_GetEnumerator = F.SpecialMethod(SpecialMember.System_Collections_Generic_IEnumerable_T__GetEnumerator).AsMember(IEnumerableOfElementType);
Lowering\IteratorRewriter\IteratorStateMachine.cs (3)
21private readonly MethodSymbol _constructor; 26public IteratorStateMachine(VariableSlotAllocator slotAllocatorOpt, TypeCompilationState compilationState, MethodSymbol iteratorMethod, int iteratorMethodOrdinal, bool isEnumerable, TypeWithAnnotations elementType) 51internal override MethodSymbol Constructor
Lowering\LocalRewriter\DelegateCacheContainer.cs (8)
19private readonly Dictionary<(TypeSymbol?, TypeSymbol, MethodSymbol), FieldSymbol> _delegateFields = new(CLRSignatureComparer.Instance); 36TypeMap.ConcatMethodTypeParameters((MethodSymbol)owner, stopAt: null))) 40Debug.Assert(owner is NamedTypeSymbol { Arity: > 0 } or MethodSymbol { Arity: > 0 }); 62var targetMethod = boundDelegateCreation.MethodOpt; 93private sealed class CLRSignatureComparer : IEqualityComparer<(TypeSymbol? constrainedToTypeOpt, TypeSymbol delegateType, MethodSymbol targetMethod)> 97public bool Equals((TypeSymbol? constrainedToTypeOpt, TypeSymbol delegateType, MethodSymbol targetMethod) x, (TypeSymbol? constrainedToTypeOpt, TypeSymbol delegateType, MethodSymbol targetMethod) y) 106public int GetHashCode((TypeSymbol? constrainedToTypeOpt, TypeSymbol delegateType, MethodSymbol targetMethod) conversion)
Lowering\LocalRewriter\DelegateCacheRewriter.cs (5)
36var targetMethod = boundDelegateCreation.MethodOpt; 123private static bool TryGetOwnerFunctionOrExtensionType(MethodSymbol currentFunction, BoundDelegateCreationExpression boundDelegateCreation, [NotNullWhen(true)] out Symbol? owner) 125var targetMethod = boundDelegateCreation.MethodOpt; 142for (; enclosingSymbol is MethodSymbol enclosingMethod; enclosingSymbol = enclosingSymbol.ContainingSymbol) 183for (; enclosingSymbol is MethodSymbol enclosingMethod; enclosingSymbol = enclosingSymbol.ContainingSymbol)
Lowering\LocalRewriter\DynamicSiteContainer.cs (3)
15private readonly MethodSymbol _topLevelMethod; 17internal DynamicSiteContainer(string name, MethodSymbol topLevelMethod, MethodSymbol containingMethod)
Lowering\LocalRewriter\LocalRewriter.cs (18)
57MethodSymbol containingMethod, 86MethodSymbol method, 337delegateType.DelegateInvokeMethod() is MethodSymbol delegateInvoke && 355var lambda = node.Symbol; 358var oldContainingSymbol = _factory.CurrentFunction; 388var localFunction = node.Symbol; 419static bool hasReturnTypeOrParameter(MethodSymbol localFunction, Func<TypeWithAnnotations, bool> predicate) => 423var oldContainingSymbol = _factory.CurrentFunction; 615/// Recommendation: Do not use, use <see cref="TryGetSpecialTypeMethod(SyntaxNode, SpecialMember, out MethodSymbol, bool)"/> instead! 618private MethodSymbol UnsafeGetSpecialTypeMethod(SyntaxNode syntax, SpecialMember specialMember) 625/// Recommendation: Do not use, use <see cref="TryGetSpecialTypeMethod(SyntaxNode, SpecialMember, CSharpCompilation, BindingDiagnosticBag, out MethodSymbol, bool)"/> instead! 628private static MethodSymbol UnsafeGetSpecialTypeMethod(SyntaxNode syntax, SpecialMember specialMember, CSharpCompilation compilation, BindingDiagnosticBag diagnostics) 630MethodSymbol method; 645private bool TryGetSpecialTypeMethod(SyntaxNode syntax, SpecialMember specialMember, out MethodSymbol method, bool isOptional = false) 650private static bool TryGetSpecialTypeMethod(SyntaxNode syntax, SpecialMember specialMember, CSharpCompilation compilation, BindingDiagnosticBag diagnostics, out MethodSymbol method, bool isOptional = false) 666MethodSymbol? getTypeFromHandle; 696MethodSymbol? getTypeFromHandle; 1139private void CheckRefReadOnlySymbols(MethodSymbol symbol)
Lowering\LocalRewriter\LocalRewriter.DecisionDagRewriter.cs (1)
167private static bool MethodMayMutateReceiver(BoundExpression receiver, MethodSymbol method)
Lowering\LocalRewriter\LocalRewriter.PatternLocalRewriter.cs (12)
162MethodSymbol method = d.DeconstructMethod; 238_localRewriter.TryGetNullableMethod(t.Syntax, inputType, SpecialMember.System_Nullable_T_GetValueOrDefault, out MethodSymbol getValueOrDefault)) 338var ctor = (MethodSymbol)_factory.WellKnownMember(WellKnownMember.System_Index__ctor); 352var indexCtor = (MethodSymbol)_factory.WellKnownMember(WellKnownMember.System_Index__ctor); 356var rangeCtor = (MethodSymbol)_factory.WellKnownMember(WellKnownMember.System_Range__ctor); 470var sequenceEqual = 471((MethodSymbol)_factory.WellKnownMember(isReadOnlySpan 475var asSpan = (MethodSymbol)_factory.WellKnownMember(WellKnownMember.System_MemoryExtensions__AsSpan_String);
Lowering\LocalRewriter\LocalRewriter_AssignmentOperator.cs (1)
304var setMethod = property.GetOwnOrInheritedSetMethod();
Lowering\LocalRewriter\LocalRewriter_BinaryOperator.cs (23)
187MethodSymbol? method, 203MethodSymbol? method, 545private BoundExpression RewriteLiftedBinaryOperator(SyntaxNode syntax, BinaryOperatorKind operatorKind, BoundExpression loweredLeft, BoundExpression loweredRight, TypeSymbol type, MethodSymbol? method, TypeSymbol? constrainedToTypeOpt) 608MethodSymbol? leftTruthOperator, 733private BoundExpression MakeTruthTestForDynamicLogicalOperator(SyntaxNode syntax, BinaryOperatorKind operatorKind, BoundExpression loweredLeft, TypeSymbol boolean, MethodSymbol? leftTruthOperator, TypeSymbol? constrainedToTypeOpt, bool negative) 757return new BoundUnaryOperator(syntax, UnaryOperatorKind.BoolLogicalNegation, converted, ConstantValue.NotAvailable, MethodSymbol.None, constrainedToTypeOpt: null, LookupResultKind.Viable, boolean) 792MethodSymbol? method, 819MethodSymbol? method, 1149MethodSymbol? method, 1318MethodSymbol? method, 1358MethodSymbol? method, 1427MethodSymbol? method, 1529MethodSymbol? method, 1855MethodSymbol getValueOrDefaultX = UnsafeGetNullableMethod(syntax, boundTempX.Type, SpecialMember.System_Nullable_T_GetValueOrDefault); 1856MethodSymbol getValueOrDefaultY = UnsafeGetNullableMethod(syntax, boundTempY.Type, SpecialMember.System_Nullable_T_GetValueOrDefault); 1913private MethodSymbol UnsafeGetNullableMethod(SyntaxNode syntax, TypeSymbol nullableType, SpecialMember member) 1923internal static MethodSymbol UnsafeGetNullableMethod(SyntaxNode syntax, TypeSymbol nullableType, SpecialMember member, CSharpCompilation compilation, BindingDiagnosticBag diagnostics) 1930private bool TryGetNullableMethod(SyntaxNode syntax, TypeSymbol nullableType, SpecialMember member, out MethodSymbol result, bool isOptional = false) 2021var method = UnsafeGetSpecialTypeMethod(syntax, member); 2029MethodSymbol method; 2032method = (MethodSymbol)_compilation.Assembly.GetSpecialTypeMember(member); 2035(object)(method = (MethodSymbol)_compilation.Assembly.GetSpecialTypeMember(member)) == null) 2082var method = UnsafeGetSpecialTypeMethod(syntax, member);
Lowering\LocalRewriter\LocalRewriter_Call.cs (13)
98private void EmbedIfNeedTo(BoundExpression receiver, ImmutableArray<MethodSymbol> methods, SyntaxNode syntaxNode) 109foreach (var m in methods) 137ref MethodSymbol method, 200var containingMethod = this._factory.CurrentFunction; 216var symbolForCompare = needToReduce ? ReducedExtensionMethodSymbol.Create(interceptor, receiverOpt!.Type, _compilation, out _) : interceptor; 379MethodSymbol method = node.Method; 459MethodSymbol method, 540private BoundExpression MakeCall(SyntaxNode syntax, BoundExpression? rewrittenReceiver, MethodSymbol method, ImmutableArray<BoundExpression> rewrittenArguments) 677var requiresInstanceReceiver = methodOrIndexer.RequiresInstanceReceiver() && methodOrIndexer is not MethodSymbol { MethodKind: MethodKind.Constructor } and not FunctionPointerMethodSymbol; 962(isReceiverTakenByValue && methodOrIndexer is MethodSymbol)) // Extension methods with by-value receivers capture by value as classic extension methods do. 1331return ((MethodSymbol)methodOrIndexer).Parameters[0].Type as NamedTypeSymbol; 1514MethodSymbol? arrayEmpty = _compilation.GetSpecialTypeMember(SpecialMember.System_Array__Empty) as MethodSymbol;
Lowering\LocalRewriter\LocalRewriter_CollectionExpression.cs (47)
115var addMethod = (MethodSymbol?)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_Generic_List_T__Add); 123static bool canOptimizeListElement(BoundNode element, MethodSymbol addMethod) 178if (!TryGetWellKnownTypeMember(node.Syntax, WellKnownMember.System_Linq_Enumerable__ToList, out MethodSymbol? toListGeneric, isOptional: true)) 183var toListOfElementType = toListGeneric.Construct([listElementType]); 200private bool ShouldUseIEnumerableBulkAddMethod(TypeSymbol spreadType, TypeSymbol targetEnumerableType, MethodSymbol? getEnumeratorMethod) 304if (_factory.WellKnownMethod(WellKnownMember.System_Runtime_InteropServices_ImmutableCollectionsMarshal__AsImmutableArray_T, isOptional: true) is MethodSymbol asImmutableArray) 338var constructor = ((MethodSymbol)_factory.WellKnownMember(WellKnownMember.System_ReadOnlySpan_T__ctor_Array)).AsMember(spanType); 371var spanConstructor = _factory.WellKnownMethod(wellKnownMember).AsMember(spanType); 411var listToArray = ((MethodSymbol)_factory.WellKnownMember(WellKnownMember.System_Collections_Generic_List_T__ToArray)).AsMember((NamedTypeSymbol)list.Type); 588var constructMethod = node.CollectionBuilderMethod; 653: WellKnownMember.System_Span_T__ctor_ref_T, isOptional: true) is MethodSymbol spanRefConstructor) 659var constructor = spanRefConstructor.AsMember(spanType); 671MethodSymbol elementRef = _factory.ModuleBuilderOpt.EnsureInlineArrayElementRefExists(syntax, intType, _diagnostics.DiagnosticBag). 698MethodSymbol inlineArrayAsSpan = asReadOnlySpan ? 774&& tryGetToArrayMethod(spreadTypeOriginalDefinition, WellKnownType.System_Collections_Generic_List_T, WellKnownMember.System_Collections_Generic_List_T__ToArray, out MethodSymbol? listToArrayMethod)) 785var linqToArrayMethod = linqToArrayMethodGeneric.Construct([arrayType.ElementTypeWithAnnotations]); 794&& TryGetSpanConversion(spreadExpression.Type, writableOnly: false, out var asSpanMethod)) 797if (tryGetToArrayMethod(spanType, WellKnownType.System_ReadOnlySpan_T, WellKnownMember.System_ReadOnlySpan_T__ToArray, out var toArrayMethod) 805bool tryGetToArrayMethod(TypeSymbol spreadTypeOriginalDefinition, WellKnownType wellKnownType, WellKnownMember wellKnownMember, [NotNullWhen(true)] out MethodSymbol? toArrayMethod) 988private bool TryGetSpanConversion(TypeSymbol type, bool writableOnly, out MethodSymbol? asSpanMethod) 1038if (!TryGetSpanConversion(type, writableOnly, out var asSpanMethod)) 1048private BoundExpression CallAsSpanMethod(BoundExpression spreadExpression, MethodSymbol? asSpanMethod) 1054if (asSpanMethod is MethodSymbol { MethodKind: MethodKind.Constructor } constructor) 1058else if (asSpanMethod is MethodSymbol { IsStatic: true, ParameterCount: 1 }) 1072private (MethodSymbol spanSliceMethod, BoundExpression spreadElementAsSpan, MethodSymbol getLengthMethod, MethodSymbol copyToMethod)? PrepareCopyToOptimization( 1097(MethodSymbol getLengthMethod, MethodSymbol copyToMethod)? getSpanMethodsForSpread( 1119MethodSymbol spanSliceMethod, 1121MethodSymbol getLengthMethod, 1122MethodSymbol copyToMethod) 1176MethodSymbol? setCount = null; 1177MethodSymbol? asSpan = null; 1182setCount = ((MethodSymbol?)_compilation.GetWellKnownTypeMember(WellKnownMember.System_Runtime_InteropServices_CollectionsMarshal__SetCount_T))?.Construct(typeArguments); 1183asSpan = ((MethodSymbol?)_compilation.GetWellKnownTypeMember(WellKnownMember.System_Runtime_InteropServices_CollectionsMarshal__AsSpan_T))?.Construct(typeArguments); 1199var constructor = ((MethodSymbol)_factory.WellKnownMember(WellKnownMember.System_Collections_Generic_List_T__ctorInt32)).AsMember(collectionType); 1223var constructor = ((MethodSymbol)_factory.WellKnownMember(WellKnownMember.System_Collections_Generic_List_T__ctor)).AsMember(collectionType); 1250var spanGetItem = ((MethodSymbol)_factory.WellKnownMember(WellKnownMember.System_Span_T__get_Item)).AsMember((NamedTypeSymbol)spanTemp.Type); 1329var addMethod = _factory.WellKnownMethod(WellKnownMember.System_Collections_Generic_List_T__Add).AsMember(collectionType); 1330var addRangeMethod = _factory.WellKnownMethod(WellKnownMember.System_Collections_Generic_List_T__AddRange, isOptional: true)?.AsMember(collectionType);
Lowering\LocalRewriter\LocalRewriter_CompoundAssignmentOperator.cs (2)
1047var method = call.Method; 1068private static bool IsSpecialMember(MethodSymbol method, SpecialMember specialMember)
Lowering\LocalRewriter\LocalRewriter_Conversion.cs (25)
109if (!TryGetWellKnownTypeMember<MethodSymbol>(node.Syntax, WellKnownMember.System_ReadOnlySpan_T__ctor_Array_Start_Length, out MethodSymbol? ctor)) 559MethodSymbol? symbolOpt = oldNodeOpt.SymbolOpt; 572var method = oldNodeOpt.SymbolOpt; 605MethodSymbol createSpan; 639MethodSymbol method = methodDefinition.AsMember(destinationType); 668MethodSymbol implicitOperator = implicitOperatorDefinition.AsMember((NamedTypeSymbol)sourceType); 681MethodSymbol castUpMethod = castUpMethodDefinition.AsMember(destinationType).Construct([sourceElementType]); 702MethodSymbol method = methodDefinition.AsMember(destinationType).Construct([sourceElementType]); 760delegateType.DelegateInvokeMethod() is MethodSymbol delegateInvoke && 1134MethodSymbol ctor = UnsafeGetNullableMethod(syntax, rewrittenType, SpecialMember.System_Nullable_T__ctor); 1150MethodSymbol get_Value = UnsafeGetNullableMethod(syntax, rewrittenOperandType, SpecialMember.System_Nullable_T_get_Value); 1194if (!TryGetSpecialTypeMethod(syntax, DecimalConversionMethod(typeFromUnderlying, typeToUnderlying), out MethodSymbol method)) 1238MethodSymbol getValueOrDefault; 1457MethodSymbol ctor = UnsafeGetNullableMethod(call.Syntax, resultType, SpecialMember.System_Nullable_T__ctor); 1510MethodSymbol getValueOrDefault = UnsafeGetNullableMethod(syntax, boundTemp.Type, SpecialMember.System_Nullable_T_GetValueOrDefault); 1565var factory = conversion.Method; 1611MethodSymbol method; 1844if (!TryGetSpecialTypeMethod(syntax, member, out MethodSymbol method)) 1877var meth = conversion.Method; 1916MethodSymbol method; 1930MethodSymbol method; 1947MethodSymbol method; 1960MethodSymbol method; 1988private Conversion TryMakeUserDefinedConversion(SyntaxNode syntax, MethodSymbol meth, TypeSymbol fromType, TypeSymbol toType, bool @checked, bool isImplicit)
Lowering\LocalRewriter\LocalRewriter_DelegateCreationExpression.cs (1)
31var method = node.MethodOpt;
Lowering\LocalRewriter\LocalRewriter_Event.cs (7)
56MethodSymbol? method = node.IsAddition ? node.Event.AddMethod : node.Event.RemoveMethod; 117MethodSymbol? clearMethod; 157MethodSymbol? marshalMethod; 250MethodSymbol? getOrCreateMethod; 271MethodSymbol invocationListAccessor = invocationListProperty.GetMethod; 301var ctor = _factory.WellKnownMethod(WellKnownMember.System_Runtime_InteropServices_ComAwareEventInfo__ctor); 305var addRemove = _factory.WellKnownMethod(node.IsAddition ? WellKnownMember.System_Runtime_InteropServices_ComAwareEventInfo__AddEventHandler :
Lowering\LocalRewriter\LocalRewriter_FixedStatement.cs (3)
312var getPinnableMethod = fixedInitializer.GetPinnableOpt; 477MethodSymbol? offsetMethod; 538MethodSymbol? lengthMethod;
Lowering\LocalRewriter\LocalRewriter_ForEachStatement.cs (24)
61else if (node.EnumeratorInfoOpt?.MoveNextAwaitableInfo is null && CanRewriteForEachAsFor(node.Syntax, nodeExpressionType, out var indexerGet, out var lengthGetter)) 71private bool CanRewriteForEachAsFor(SyntaxNode forEachSyntax, TypeSymbol nodeExpressionType, [NotNullWhen(true)] out MethodSymbol? indexerGet, [NotNullWhen(true)] out MethodSymbol? lengthGet) 76internal static bool CanRewriteForEachAsFor(CSharpCompilation compilation, SyntaxNode forEachSyntax, TypeSymbol nodeExpressionType, [NotNullWhen(true)] out MethodSymbol? indexerGet, [NotNullWhen(true)] out MethodSymbol? lengthGet, BindingDiagnosticBag diagnostics) 89lengthGet = (MethodSymbol?)Binder.GetWellKnownTypeMember(compilation, WellKnownMember.System_Span_T__get_Length, diagnostics, syntax: forEachSyntax, isOptional: true)?.SymbolAsMember(spanType); 90indexerGet = (MethodSymbol?)Binder.GetWellKnownTypeMember(compilation, WellKnownMember.System_Span_T__get_Item, diagnostics, syntax: forEachSyntax, isOptional: true)?.SymbolAsMember(spanType); 95lengthGet = (MethodSymbol?)Binder.GetWellKnownTypeMember(compilation, WellKnownMember.System_ReadOnlySpan_T__get_Length, diagnostics, syntax: forEachSyntax, isOptional: true)?.SymbolAsMember(spanType); 96indexerGet = (MethodSymbol?)Binder.GetWellKnownTypeMember(compilation, WellKnownMember.System_ReadOnlySpan_T__get_Item, diagnostics, syntax: forEachSyntax, isOptional: true)?.SymbolAsMember(spanType); 294private bool TryGetDisposeMethod(SyntaxNode forEachSyntax, ForEachEnumeratorInfo enumeratorInfo, out MethodSymbol disposeMethod) 299internal static bool TryGetDisposeMethod(CSharpCompilation compilation, SyntaxNode syntax, bool isAsync, BindingDiagnosticBag diagnostics, out MethodSymbol disposeMethod) 303disposeMethod = (MethodSymbol)Binder.GetWellKnownTypeMember(compilation, WellKnownMember.System_IAsyncDisposable__DisposeAsync, diagnostics, syntax: syntax); 333MethodSymbol? disposeMethod = enumeratorInfo.PatternDisposeInfo?.Method; // pattern-based 505private BoundExpression ConvertReceiverForInvocation(CSharpSyntaxNode syntax, BoundExpression receiver, MethodSymbol method, Conversion receiverConversion, TypeSymbol convertedReceiverType) 710private BoundStatement RewriteForEachStatementAsFor(BoundForEachStatement node, MethodSymbol indexerGet, MethodSymbol lengthGet) 714getItem: static (LocalRewriter rewriter, SyntaxNode syntax, ForEachEnumeratorInfo enumeratorInfo, BoundLocal boundArrayVar, BoundLocal boundPositionVar, (MethodSymbol indexerGet, MethodSymbol lengthGet) arg) => 723getLength: static (LocalRewriter rewriter, SyntaxNode syntax, BoundLocal boundArrayVar, (MethodSymbol indexerGet, MethodSymbol lengthGet) arg) => 768MethodSymbol elementRef; 1066MethodSymbol getLowerBoundMethod = UnsafeGetSpecialTypeMethod(forEachSyntax, SpecialMember.System_Array__GetLowerBound); 1067MethodSymbol getUpperBoundMethod = UnsafeGetSpecialTypeMethod(forEachSyntax, SpecialMember.System_Array__GetUpperBound);
Lowering\LocalRewriter\LocalRewriter_FunctionPointerInvocation.cs (1)
22MethodSymbol functionPointer = node.FunctionPointer.Signature;
Lowering\LocalRewriter\LocalRewriter_Index.cs (1)
74if (!TryGetNullableMethod(syntax, targetNullableType, SpecialMember.System_Nullable_T__ctor, out MethodSymbol nullableCtor))
Lowering\LocalRewriter\LocalRewriter_IndexerAccess.cs (21)
159var getMethod = indexer.GetOwnOrInheritedGetMethod(); 255var getItemOrSliceHelper = (MethodSymbol?)_compilation.GetWellKnownTypeMember(node.GetItemOrSliceHelper); 283MethodSymbol createSpan = getCreateSpanHelper(node, spanType: getItemOrSliceHelper.ContainingType, intType: (NamedTypeSymbol)getItemOrSliceHelper.Parameters[0].Type); 293TryGetStartOnlyOverload(getItemOrSliceHelper, node.Syntax) is MethodSymbol startOnlyOverload) 384MethodSymbol getCreateSpanHelper(BoundInlineArrayAccess node, NamedTypeSymbol spanType, NamedTypeSymbol intType) 388MethodSymbol createSpan; 401BoundExpression getElementRef(BoundInlineArrayAccess node, BoundExpression rewrittenReceiver, BoundExpression index, MethodSymbol getItemOrSliceHelper, int length) 413MethodSymbol elementRef; 432MethodSymbol elementRef; 455MethodSymbol createSpan = getCreateSpanHelper(node, spanType, intType); 793else if (unloweredExpr is BoundObjectCreationExpression { Constructor: MethodSymbol constructor, Arguments: { Length: 2 } arguments, ArgsToParamsOpt: { IsDefaultOrEmpty: true }, InitializerExpressionOpt: null } && 927TryGetStartOnlyOverload(sliceCall.Method, node.Syntax) is MethodSymbol startOnlyOverload) 1089private MethodSymbol? TryGetStartOnlyOverload(MethodSymbol method, SyntaxNode syntax) 1092MethodSymbol? startLengthOverload; 1093MethodSymbol? startOverload; 1128MethodSymbol? tryGetWellKnownSliceStartOverload(WellKnownMember startLengthMember, WellKnownMember startMember, MethodSymbol methodDefinition, SyntaxNode syntax) 1131MethodSymbol? startLengthOverload; 1132MethodSymbol? startOverload;
Lowering\LocalRewriter\LocalRewriter_Literal.cs (5)
70var curMethod = _factory.CurrentFunction; 131var ctor = (MethodSymbol)_compilation.Assembly.GetSpecialTypeMember(member); 150var ctor = (MethodSymbol)_compilation.Assembly.GetSpecialTypeMember(SpecialMember.System_DateTime__CtorInt64);
Lowering\LocalRewriter\LocalRewriter_LockStatement.cs (2)
105MethodSymbol? exitMethod; 122MethodSymbol? enterMethod;
Lowering\LocalRewriter\LocalRewriter_NullCoalescingAssignmentOperator.cs (2)
92out var getValueOrDefault)) 102out var hasValue))
Lowering\LocalRewriter\LocalRewriter_NullCoalescingOperator.cs (4)
140TryGetNullableMethod(rewrittenLeft.Syntax, rewrittenLeft.Type, SpecialMember.System_Nullable_T_GetValueOrDefault, out MethodSymbol? getValueOrDefault, isOptional: true)) 147TryGetNullableMethod(rewrittenLeft.Syntax, rewrittenLeft.Type, SpecialMember.System_Nullable_T_GetValueOrDefaultDefaultValue, out MethodSymbol? getValueOrDefaultDefaultValue, isOptional: true)) 199var method = boundCall.Method; 257MethodSymbol getValueOrDefault = UnsafeGetNullableMethod(rewrittenLeft.Syntax, rewrittenLeftType, SpecialMember.System_Nullable_T_GetValueOrDefault);
Lowering\LocalRewriter\LocalRewriter_ObjectCreationExpression.cs (5)
35var constructor = node.Constructor; 338MethodSymbol? method; 384var ctor = _factory.WellKnownMethod(WellKnownMember.System_Guid__ctor); 397var getTypeFromCLSID = _factory.WellKnownMethod(WellKnownMember.System_Runtime_InteropServices_Marshal__GetTypeFromCLSID, isOptional: true); 415var createInstance = _factory.WellKnownMethod(WellKnownMember.System_Activator__CreateInstance);
Lowering\LocalRewriter\LocalRewriter_ObjectOrCollectionInitializerExpression.cs (1)
181MethodSymbol addMethod = initializer.AddMethod;
Lowering\LocalRewriter\LocalRewriter_PropertyAccess.cs (2)
79MethodSymbol? getMethodOpt = null, 91var getMethod = getMethodOpt ?? property.GetOwnOrInheritedGetMethod();
Lowering\LocalRewriter\LocalRewriter_Range.cs (2)
95if (!TryGetNullableMethod(node.Syntax, node.Type, SpecialMember.System_Nullable_T__ctor, out MethodSymbol nullableCtor)) 157MethodSymbol constructionMethod,
Lowering\LocalRewriter\LocalRewriter_ReturnStatement.cs (2)
26var currentFunction = _factory.CurrentFunction; 44var method = _factory.CurrentFunction;
Lowering\LocalRewriter\LocalRewriter_StackAlloc.cs (2)
61if (TryGetWellKnownTypeMember(stackAllocNode.Syntax, WellKnownMember.System_Span_T__ctor_Pointer, out MethodSymbol? spanConstructor)) 63constructorCall = _factory.New((MethodSymbol)spanConstructor.SymbolAsMember(spanType), stackAllocNode, countTemp);
Lowering\LocalRewriter\LocalRewriter_StringConcat.cs (22)
156if (!TryGetSpecialTypeMethod(originalSyntax, concatMember, out var spanConcat, isOptional: true) 157|| !TryGetNeededToSpanMembers(this, originalSyntax, needsImplicitConversionFromStringToSpan, charType, out var readOnlySpanCtorRefParamChar, out var stringImplicitConversionToReadOnlySpan)) 194var method = UnsafeGetSpecialTypeMethod(originalSyntax, concatMember); 407private MethodSymbol? _concatStringString = ErrorMethodSymbol.UnknownMethod; 408private MethodSymbol? _concatStringStringString = ErrorMethodSymbol.UnknownMethod; 409private MethodSymbol? _concatStringStringStringString = ErrorMethodSymbol.UnknownMethod; 410private MethodSymbol? _concatStringArray = ErrorMethodSymbol.UnknownMethod; 411private MethodSymbol? _objectToString = ErrorMethodSymbol.UnknownMethod; 455private readonly void InitializeField(ref MethodSymbol? member, SpecialMember specialMember) 459member = _compilation.GetSpecialTypeMember(specialMember) as MethodSymbol; 463private readonly bool IsConcatNonArray(BoundCall call, ref MethodSymbol? concatMethod, SpecialMember concatSpecialMember, out ImmutableArray<BoundExpression> arguments) 483[NotNullWhen(true)] out MethodSymbol? readOnlySpanCtorRefParamChar, 484out MethodSymbol? stringImplicitConversionToReadOnlySpan) 489if (self.TryGetSpecialTypeMethod(syntax, SpecialMember.System_ReadOnlySpan_T__ctor_Reference, out MethodSymbol? readOnlySpanCtorRefParamGeneric, isOptional: true) && 511MethodSymbol spanConcat, 512MethodSymbol? stringImplicitConversionToReadOnlySpan, 513MethodSymbol readOnlySpanCtorRefParamChar, 607var method = UnsafeGetSpecialTypeMethod(current.Syntax, member); 662var objectToStringMethod = UnsafeGetSpecialTypeMethod(syntax, SpecialMember.System_Object__ToString); 666MethodSymbol? structToStringMethod = null; 673if (member is MethodSymbol toStringMethod &&
Lowering\LocalRewriter\LocalRewriter_StringInterpolation.cs (2)
225var toStringAndClear = (MethodSymbol)Binder.GetWellKnownTypeMember(_compilation, WellKnownMember.System_Runtime_CompilerServices_DefaultInterpolatedStringHandler__ToStringAndClear, _diagnostics, syntax: syntax);
Lowering\LocalRewriter\LocalRewriter_SwitchExpression.cs (5)
129_factory.WellKnownMember(WellKnownMember.System_Runtime_CompilerServices_SwitchExpressionException__ctorObject, isOptional: true) is MethodSymbol) 137throwCall = (_factory.WellKnownMember(WellKnownMember.System_Runtime_CompilerServices_SwitchExpressionException__ctor, isOptional: true) is MethodSymbol) ? 175var throwSwitchExpressionExceptionMethod = module.EnsureThrowSwitchExpressionExceptionExists(diagnosticSyntax, factory, diagnostics); 190var throwSwitchExpressionExceptionMethod = module.EnsureThrowSwitchExpressionExceptionParameterlessExists(diagnosticSyntax, factory, diagnostics); 204var throwMethod = module.EnsureThrowInvalidOperationExceptionExists(diagnosticSyntax, factory, diagnostics);
Lowering\LocalRewriter\LocalRewriter_TupleCreationExpression.cs (6)
57var smallestCtor = (MethodSymbol?)NamedTypeSymbol.GetWellKnownMemberInType(smallestType.OriginalDefinition, 66MethodSymbol smallestConstructor = smallestCtor.AsMember(smallestType); 74var tuple8Ctor = (MethodSymbol?)NamedTypeSymbol.GetWellKnownMemberInType(tuple8Type.OriginalDefinition, 93MethodSymbol constructor = tuple8Ctor.AsMember(underlyingTupleTypeChain.Pop());
Lowering\LocalRewriter\LocalRewriter_UnaryOperator.cs (20)
66MethodSymbol? method, 78MethodSymbol? method, 167method = (MethodSymbol)_compilation.Assembly.GetSpecialTypeMember(SpecialMember.System_Decimal__op_UnaryNegation); 182MethodSymbol? method, 205MethodSymbol getValueOrDefault = UnsafeGetNullableMethod(syntax, boundTemp.Type, SpecialMember.System_Nullable_T_GetValueOrDefault); 246MethodSymbol? method, 354private BoundExpression GetLiftedUnaryOperatorConsequence(UnaryOperatorKind kind, SyntaxNode syntax, MethodSymbol? method, TypeSymbol? constrainedToTypeOpt, TypeSymbol type, BoundExpression nonNullOperand) 356MethodSymbol ctor = UnsafeGetNullableMethod(syntax, type, SpecialMember.System_Nullable_T__ctor); 456private BoundExpression MakeInstanceCompoundAssignmentOperatorResult(SyntaxNode syntax, BoundExpression left, BoundExpression? rightOpt, MethodSymbol operatorMethod, bool isChecked, AssignmentKind assignmentKind) 523static BoundCall makeIncrementCall(SyntaxNode syntax, BoundLocal boundTemp, BoundExpression? rightOpt, MethodSymbol operatorMethod) 830MethodSymbol getValueOrDefault = UnsafeGetNullableMethod(syntax, type, SpecialMember.System_Nullable_T_GetValueOrDefault); 831MethodSymbol ctor = UnsafeGetNullableMethod(syntax, type, SpecialMember.System_Nullable_T__ctor); 914MethodSymbol ctor = UnsafeGetNullableMethod(node.Syntax, binaryOperandType, SpecialMember.System_Nullable_T__ctor); 966private MethodSymbol GetDecimalIncDecOperator(BinaryOperatorKind oper) 977var method = (MethodSymbol)_compilation.Assembly.GetSpecialTypeMember(member); 986MethodSymbol method = GetDecimalIncDecOperator(oper); 995MethodSymbol method = GetDecimalIncDecOperator(oper); 996MethodSymbol getValueOrDefault = UnsafeGetNullableMethod(syntax, operand.Type, SpecialMember.System_Nullable_T_GetValueOrDefault); 997MethodSymbol ctor = UnsafeGetNullableMethod(syntax, operand.Type, SpecialMember.System_Nullable_T__ctor);
Lowering\LocalRewriter\LocalRewriter_UsingStatement.cs (4)
363MethodSymbol getValueOrDefault = UnsafeGetNullableMethod(resourceTypeSyntax, local.Type, SpecialMember.System_Nullable_T_GetValueOrDefault); 445MethodSymbol? disposeMethod = disposeInfo?.Method; 456TryGetWellKnownTypeMember<MethodSymbol>(syntax: null, WellKnownMember.System_IAsyncDisposable__DisposeAsync, out disposeMethod, location: awaitKeyword.GetLocation()); 494MethodSymbol method = methodArgumentInfo.Method;
Lowering\LocalRewriter\LocalRewriter_Yield.cs (1)
22var currentFunction = _factory.CurrentFunction;
Lowering\LocalRewriter\LoweredDynamicOperationFactory.cs (17)
132MethodSymbol argumentInfoFactory = GetArgumentInfoFactory(); 175MethodSymbol argumentInfoFactory = GetArgumentInfoFactory(); 238MethodSymbol argumentInfoFactory = GetArgumentInfoFactory(); 274MethodSymbol argumentInfoFactory = GetArgumentInfoFactory(); 317MethodSymbol argumentInfoFactory = GetArgumentInfoFactory(); 344MethodSymbol argumentInfoFactory = GetArgumentInfoFactory(); 376MethodSymbol argumentInfoFactory = GetArgumentInfoFactory(); 417MethodSymbol argumentInfoFactory = GetArgumentInfoFactory(); 446MethodSymbol argumentInfoFactory = GetArgumentInfoFactory(); 485MethodSymbol argumentInfoFactory = GetArgumentInfoFactory(); 520private MethodSymbol GetArgumentInfoFactory() 533return _factory.Call(null, (MethodSymbol)binderFactory, args.AsImmutableOrNull()); 560MethodSymbol argumentInfoFactory, 613MethodSymbol callSiteFactoryGeneric = _factory.WellKnownMethod(WellKnownMember.System_Runtime_CompilerServices_CallSite_T__Create); 615MethodSymbol? delegateInvoke; 644var callSiteFactoryMethod = callSiteFactoryGeneric.AsMember(callSiteType); 800MethodSymbol argumentInfoFactory,
Lowering\MethodToClassRewriter.cs (11)
98var rewrittenMethodSymbol = VisitMethodSymbol(node.Method); 105Debug.Assert(rewrittenMethodSymbol.IsMetadataVirtual(MethodSymbol.IsMetadataVirtualOption.ForceCompleteIfNeeded) 106== node.Method.IsMetadataVirtual(MethodSymbol.IsMetadataVirtualOption.ForceCompleteIfNeeded)); 132private MethodSymbol GetMethodWrapperForBaseNonVirtualCall(MethodSymbol methodBeingCalled, SyntaxNode syntax) 134var newMethod = GetOrCreateBaseFunctionWrapper(methodBeingCalled, syntax); 154private MethodSymbol GetOrCreateBaseFunctionWrapper(MethodSymbol methodBeingWrapped, SyntaxNode syntax) 158MethodSymbol? wrapper = this.CompilationState.GetMethodWrapper(methodBeingWrapped); 340MethodSymbol? method = node.MethodOpt; 387internal BaseMethodWrapperSymbol(NamedTypeSymbol containingType, MethodSymbol methodBeingWrapped, SyntaxNode syntax, string name)
Lowering\SpillSequenceSpiller.cs (5)
26MethodSymbol method, SyntaxNode syntaxNode, TypeCompilationState compilationState, 232internal static BoundStatement Rewrite(BoundStatement body, MethodSymbol method, TypeCompilationState compilationState, BindingDiagnosticBag diagnostics) 1304var hasValueOpt = node.HasValueMethodOpt; 1410var oldCurrentFunction = _F.CurrentFunction; 1419var oldCurrentFunction = _F.CurrentFunction;
Lowering\StateMachineRewriter\IteratorAndAsyncCaptureWalker.cs (4)
46private IteratorAndAsyncCaptureWalker(CSharpCompilation compilation, MethodSymbol method, BoundNode node, HashSet<Symbol> initiallyAssignedVariables, bool isRuntimeAsync) 58public static OrderedSet<Symbol> Analyze(CSharpCompilation compilation, MethodSymbol method, BoundNode node, bool isRuntimeAsync, DiagnosticBag diagnostics) 371private readonly MethodSymbol _topLevelMethod; 374public OutsideVariablesUsedInside(IteratorAndAsyncCaptureWalker analyzer, MethodSymbol topLevelMethod, IteratorAndAsyncCaptureWalker parent)
Lowering\StateMachineRewriter\MethodToStateMachineRewriter.cs (3)
21internal readonly MethodSymbol OriginalMethod; 104MethodSymbol originalMethod, 190protected override MethodSymbol CurrentMethod
Lowering\StateMachineRewriter\RefInitializationHoister.cs (2)
28internal class RefInitializationHoister<THoistedSymbol, THoistedAccess>(SyntheticBoundNodeFactory f, MethodSymbol originalMethod, TypeMap typeMap) 33private readonly MethodSymbol _originalMethod = originalMethod;
Lowering\StateMachineRewriter\ResumableStateMachineStateAllocator.cs (1)
97(MethodSymbol)f.ModuleBuilderOpt.GetOrCreateHotReloadExceptionConstructorDefinition(),
Lowering\StateMachineRewriter\StateMachineRewriter.cs (10)
20protected readonly MethodSymbol method; 39MethodSymbol method, 350MethodSymbol methodToImplement, 360protected MethodSymbol OpenPropertyImplementation(MethodSymbol getterToImplement) 365var getter = prop.GetMethod; 372protected SynthesizedImplementationMethod OpenMoveNextMethodImplementation(MethodSymbol methodToImplement) 393MethodSymbol currentManagedThreadIdMethod = currentManagedThreadIdProperty.GetMethod; 406protected SynthesizedImplementationMethod GenerateIteratorGetEnumerator(MethodSymbol getEnumeratorMethod, ref BoundExpression managedThreadId, StateMachineState initialState) 523protected virtual BoundStatement InitializeParameterField(MethodSymbol getEnumeratorMethod, ParameterSymbol parameter, BoundExpression resultParameter, BoundExpression parameterProxy)
Lowering\StateMachineRewriter\StateMachineTypeSymbol.cs (3)
19public readonly MethodSymbol KickoffMethod; 21public StateMachineTypeSymbol(VariableSlotAllocator slotAllocatorOpt, TypeCompilationState compilationState, MethodSymbol kickoffMethod, int kickoffMethodOrdinal) 28private static string MakeName(VariableSlotAllocator slotAllocatorOpt, TypeCompilationState compilationState, MethodSymbol kickoffMethod, int kickoffMethodOrdinal)
Lowering\StateMachineRewriter\SynthesizedStateMachineMethod.cs (4)
26MethodSymbol interfaceMethod, 65public SynthesizedStateMachineMoveNextMethod(MethodSymbol interfaceMethod, StateMachineTypeSymbol stateMachineType) 79var kickoffMethod = StateMachineType.KickoffMethod; 113MethodSymbol interfaceMethod,
Lowering\StateMachineRewriter\SynthesizedStateMachineProperty.cs (3)
22MethodSymbol interfacePropertyGetter, 71public override MethodSymbol GetMethod 76public override MethodSymbol SetMethod
Lowering\SynthesizedMethodBaseSymbol.cs (2)
26protected readonly MethodSymbol BaseMethod; 34MethodSymbol baseMethod,
Lowering\SyntheticBoundNodeFactory.cs (47)
69private MethodSymbol? _currentFunction; 70public MethodSymbol? CurrentFunction 88private MethodSymbol? _topLevelMethod; 89public MethodSymbol? TopLevelMethod 108public SyntheticBoundNodeFactory(MethodSymbol topLevelMethod, SyntaxNode node, TypeCompilationState compilationState, BindingDiagnosticBag diagnostics, InstrumentationState? instrumentationState = null) 119public SyntheticBoundNodeFactory(MethodSymbol? topLevelMethodOpt, NamedTypeSymbol? currentClassOpt, SyntaxNode node, TypeCompilationState compilationState, BindingDiagnosticBag diagnostics, InstrumentationState? instrumentationState = null) 288var accessor = property.GetOwnOrInheritedGetMethod(); 296var accessor = property.GetOwnOrInheritedGetMethod(); 346public MethodSymbol? WellKnownMethod(WellKnownMember wm, bool isOptional) 348return (MethodSymbol?)WellKnownMember(wm, isOptional); 351public MethodSymbol WellKnownMethod(WellKnownMember wm) 353return (MethodSymbol)WellKnownMember(wm, isOptional: false)!; 404public MethodSymbol SpecialMethod(SpecialMember sm) 406var result = (MethodSymbol?)SpecialMember(sm, isOptional: false); 411public MethodSymbol? SpecialMethod(SpecialMember sm, bool isOptional) 413return (MethodSymbol?)SpecialMember(sm, isOptional); 488return Block(locals, ImmutableArray<MethodSymbol>.CastUp(localFunctions), statements); 491public BoundBlock Block(ImmutableArray<LocalSymbol> locals, ImmutableArray<MethodSymbol> localFunctions, ImmutableArray<BoundStatement> statements) 643public ParameterSymbol SynthesizedParameter(TypeSymbol type, string name, MethodSymbol? container = null, int ordinal = 0) 767var ctor = type.InstanceConstructors.Single(c => c.ParameterCount == args.Length); 771public BoundObjectCreationExpression New(MethodSymbol ctor, params BoundExpression[] args) 776var ctor = type.InstanceConstructors.Single(c => c.ParameterCount == args.Length); 780public BoundObjectCreationExpression New(MethodSymbol ctor, ImmutableArray<BoundExpression> args) 783public BoundObjectCreationExpression New(MethodSymbol constructor, ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> argumentRefKinds) 800var ctor = WellKnownMethod(wm); 819public BoundExpression StaticCall(TypeSymbol receiver, MethodSymbol method, params BoundExpression[] args) 829public BoundExpression StaticCall(MethodSymbol method, ImmutableArray<BoundExpression> args) 834MethodSymbol methodSymbol = WellKnownMethod(method); 842MethodSymbol methodSymbol = WellKnownMethod(method); 853MethodSymbol methodSymbol = SpecialMethod(method); 858public BoundCall Call(BoundExpression? receiver, MethodSymbol method) 863public BoundCall Call(BoundExpression? receiver, MethodSymbol method, BoundExpression arg0, bool useStrictArgumentRefKinds = false) 868public BoundCall Call(BoundExpression? receiver, MethodSymbol method, BoundExpression arg0, BoundExpression arg1, bool useStrictArgumentRefKinds = false) 873public BoundCall Call(BoundExpression? receiver, MethodSymbol method, params BoundExpression[] args) 881public BoundCall Call(BoundExpression? receiver, MethodSymbol method, ImmutableArray<BoundExpression> args, bool useStrictArgumentRefKinds = false) 893public static ImmutableArray<RefKind> ArgumentRefKindsFromParameterRefKinds(MethodSymbol method, bool useStrictArgumentRefKinds) 923public BoundCall Call(BoundExpression? receiver, MethodSymbol method, ImmutableArray<RefKind> refKinds, ImmutableArray<BoundExpression> args) 1227var ctor = baseType.InstanceConstructors.Single(c => c.ParameterCount == 0); 1292MethodSymbol getTypeFromHandle; 1334internal BoundExpression ConstructorInfo(MethodSymbol ctor) 1352public BoundExpression MethodDefIndex(MethodSymbol method) 1434public BoundExpression MethodInfo(MethodSymbol method, TypeSymbol systemReflectionMethodInfo) 1469private MethodSymbol GetMethodFromHandleMethod(NamedTypeSymbol methodContainer, TypeSymbol systemReflectionMethodOrConstructorInfo) 1493private MethodSymbol GetFieldFromHandleMethod(NamedTypeSymbol fieldContainer) 1554MethodSymbol? arrayEmpty = SpecialMethod(CodeAnalysis.SpecialMember.System_Array__Empty, isOptional: true); 1663MethodSymbol? containingMethod = this.CurrentFunction;
Operations\CSharpOperationFactory.cs (10)
449MethodSymbol targetMethod = boundCall.Method; 755MethodSymbol? constructor = boundWithExpression.CloneMethod; 899MethodSymbol? accessor = isObjectOrCollectionInitializer || property.RefKind != RefKind.None 940MethodSymbol addMethod = boundCollectionElementInitializer.AddMethod; 1200private IMethodReferenceOperation CreateBoundMethodGroupSingleMethodOperation(BoundMethodGroup boundMethodGroup, MethodSymbol methodSymbol, bool suppressVirtualCalls) 1274static MethodSymbol? getConstructMethod(BoundCollectionExpression expr) 1438var method = boundCompoundAssignmentOperator.Operator.Method; 1449private static TypeParameterSymbol? GetConstrainedToTypeForOperator(MethodSymbol? operatorMethod, TypeSymbol? constrainedToTypeOpt) 1585MethodSymbol? binaryOperatorMethod = boundBinaryOperator.BinaryOperatorMethod; 1586MethodSymbol? unaryOperatorMethod = boundBinaryOperator.LeftTruthOperatorMethod;
Operations\CSharpOperationFactory_Methods.cs (2)
114private bool IsCallVirtual(MethodSymbol? targetMethod, BoundExpression? receiver) 121private bool IsMethodInvalid(LookupResultKind resultKind, MethodSymbol targetMethod) =>
SymbolDisplay\SymbolDisplay.cs (1)
274var underlyingMethod = (symbol as Symbols.PublicModel.MethodSymbol)?.UnderlyingMethodSymbol;
Symbols\AnonymousTypes\AnonymousTypeManager.SymbolCollection.cs (14)
152public MethodSymbol System_Object__Equals 154get { return this.Compilation.GetSpecialTypeMember(SpecialMember.System_Object__Equals) as MethodSymbol; } 157public MethodSymbol System_Object__ToString 159get { return this.Compilation.GetSpecialTypeMember(SpecialMember.System_Object__ToString) as MethodSymbol; } 162public MethodSymbol System_Object__GetHashCode 164get { return this.Compilation.GetSpecialTypeMember(SpecialMember.System_Object__GetHashCode) as MethodSymbol; } 167public MethodSymbol System_Collections_Generic_EqualityComparer_T__Equals 169get { return this.Compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_Generic_EqualityComparer_T__Equals) as MethodSymbol; } 172public MethodSymbol System_Collections_Generic_EqualityComparer_T__GetHashCode 174get { return this.Compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_Generic_EqualityComparer_T__GetHashCode) as MethodSymbol; } 177public MethodSymbol System_Collections_Generic_EqualityComparer_T__get_Default 179get { return this.Compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_Generic_EqualityComparer_T__get_Default) as MethodSymbol; } 182public MethodSymbol System_String__Format_IFormatProvider 184get { return this.Compilation.GetSpecialTypeMember(SpecialMember.System_String__Format_IFormatProvider) as MethodSymbol; }
Symbols\AnonymousTypes\AnonymousTypeManager.Templates.cs (5)
499foreach (var method in template.SpecialMembers) 709internal static ImmutableArray<MethodSymbol> GetAnonymousTypeHiddenMethods(NamedTypeSymbol type) 730internal static MethodSymbol TranslateAnonymousTypeMethodSymbol(MethodSymbol method) 740return ((MethodSymbol)member).AsMember(translatedType);
Symbols\AnonymousTypes\PublicSymbols\AnonymousManager.TypeOrDelegatePublicSymbol.cs (4)
294internal sealed override IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls() 296return SpecializedCollections.EmptyEnumerable<(MethodSymbol Body, MethodSymbol Implemented)>();
Symbols\AnonymousTypes\SynthesizedSymbols\AnonymousType.DelegateTemplateSymbol.cs (4)
216private static ImmutableArray<Symbol> CreateMembers(MethodSymbol constructor, MethodSymbol invokeMethod) 219public new MethodSymbol DelegateInvokeMethod 220=> (MethodSymbol)_members[1];
Symbols\AnonymousTypes\SynthesizedSymbols\AnonymousType.PropertySymbol.cs (2)
148public override MethodSymbol SetMethod 196public override MethodSymbol GetMethod
Symbols\AnonymousTypes\SynthesizedSymbols\AnonymousType.SynthesizedMethodBase.cs (2)
123public sealed override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations 125get { return ImmutableArray<MethodSymbol>.Empty; }
Symbols\AnonymousTypes\SynthesizedSymbols\AnonymousType.TemplateSymbol.cs (2)
31internal readonly ImmutableArray<MethodSymbol> SpecialMembers; 87this.SpecialMembers = ImmutableArray.Create<MethodSymbol>(
Symbols\AnonymousTypes\SynthesizedSymbols\AnonymousType.TypeOrDelegateTemplateSymbol.cs (4)
336internal sealed override IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls() 338return SpecializedCollections.EmptyEnumerable<(MethodSymbol Body, MethodSymbol Implemented)>();
Symbols\ArrayTypeSymbol.cs (4)
488internal sealed override IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls() 490return SpecializedCollections.EmptyEnumerable<(MethodSymbol Body, MethodSymbol Implemented)>();
Symbols\Attributes\AttributeData.cs (1)
35public new abstract MethodSymbol? AttributeConstructor { get; }
Symbols\Attributes\PEAttributeData.cs (3)
23private MethodSymbol? _lazyAttributeConstructor; 43public override MethodSymbol? AttributeConstructor 81MethodSymbol? attributeConstructor;
Symbols\Attributes\RetargetingAttributeData.cs (3)
19private readonly MethodSymbol? _attributeConstructor; 26MethodSymbol? attributeConstructor, 41public override MethodSymbol? AttributeConstructor => _attributeConstructor;
Symbols\Attributes\SourceAttributeData.cs (7)
22private readonly MethodSymbol? _attributeConstructor; 34MethodSymbol? attributeConstructor, 61internal SourceAttributeData(CSharpCompilation compilation, AttributeSyntax attributeSyntax, NamedTypeSymbol attributeClass, MethodSymbol? attributeConstructor, bool hasErrors) 79MethodSymbol? attributeConstructor, 97public override MethodSymbol? AttributeConstructor 224internal static int GetTargetAttributeSignatureIndex(CSharpCompilation compilation, NamedTypeSymbol attributeClass, MethodSymbol? attributeConstructor, AttributeDescription description) 231var ctor = attributeConstructor;
Symbols\Compilation_WellKnownMembers.cs (13)
79/// <see cref="MethodSymbol.AsMember"/> to construct an instantiation. 251internal static Symbol? GetRuntimeMember(NamedTypeSymbol declaringType, in MemberDescriptor descriptor, SignatureComparer<MethodSymbol, FieldSymbol, PropertySymbol, TypeSymbol, ParameterSymbol> comparer, AssemblySymbol? accessWithinOpt) 257internal static Symbol? GetRuntimeMember(ImmutableArray<Symbol> members, in MemberDescriptor descriptor, SignatureComparer<MethodSymbol, FieldSymbol, PropertySymbol, TypeSymbol, ParameterSymbol> comparer, AssemblySymbol? accessWithinOpt) 311MethodSymbol method = (MethodSymbol)member; 400var ctorSymbol = (MethodSymbol?)Binder.GetWellKnownTypeMember(this, constructor, useSiteInfo: out _, isOptional: true); 447var ctorSymbol = (MethodSymbol)this.GetSpecialTypeMember(constructor); 1103internal class SpecialMembersSignatureComparer : SignatureComparer<MethodSymbol, FieldSymbol, PropertySymbol, TypeSymbol, ParameterSymbol> 1173protected override ImmutableArray<ParameterSymbol> GetParameters(MethodSymbol method) 1193protected override TypeSymbol GetReturnType(MethodSymbol method) 1217protected override bool IsByRefMethod(MethodSymbol method)
Symbols\ConstraintsHelper.cs (7)
345this MethodSymbol containingSymbol, 375this MethodSymbol containingSymbol, 809this MethodSymbol method, 860MethodSymbol method, 871((MethodSymbol)method.OriginalDefinition).TypeParameters, 1519foreach (var constructor in type.InstanceConstructors) 1598public static bool RequiresChecking(MethodSymbol method)
Symbols\ConstructedMethodSymbol.cs (3)
18internal ConstructedMethodSymbol(MethodSymbol constructedFrom, ImmutableArray<TypeWithAnnotations> typeArgumentsWithAnnotations) 20map: new TypeMap(constructedFrom.ContainingType, ((MethodSymbol)constructedFrom.OriginalDefinition).TypeParameters, typeArgumentsWithAnnotations), 21originalDefinition: (MethodSymbol)constructedFrom.OriginalDefinition,
Symbols\ConversionSignatureComparer.cs (4)
12internal sealed class ConversionSignatureComparer : IEqualityComparer<MethodSymbol> 27public bool Equals(MethodSymbol member1, MethodSymbol member2) 56public int GetHashCode(MethodSymbol member)
Symbols\DynamicTypeSymbol.cs (4)
253internal override IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls() 255return SpecializedCollections.EmptyEnumerable<(MethodSymbol Body, MethodSymbol Implemented)>();
Symbols\ErrorMethodSymbol.cs (2)
131public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations 133get { return ImmutableArray<MethodSymbol>.Empty; }
Symbols\ErrorPropertySymbol.cs (2)
57public override MethodSymbol GetMethod { get { return null; } } 60public override MethodSymbol SetMethod { get { return null; } }
Symbols\ErrorTypeSymbol.cs (4)
577internal sealed override IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls() 579return SpecializedCollections.EmptyEnumerable<(MethodSymbol Body, MethodSymbol Implemented)>();
Symbols\EventSymbol.cs (3)
64public abstract MethodSymbol? AddMethod { get; } 69public abstract MethodSymbol? RemoveMethod { get; } 163MethodSymbol? accessor = AddMethod ?? RemoveMethod;
Symbols\EventSymbolExtensions.cs (1)
15internal static MethodSymbol GetOwnOrInheritedAccessor(this EventSymbol @event, bool isAdder)
Symbols\ExtendedErrorTypeSymbol.cs (1)
320return ((MethodSymbol)symbol).Arity;
Symbols\Extensions\RewrittenLambdaOrLocalFunctionSymbol.cs (1)
16public RewrittenLambdaOrLocalFunctionSymbol(MethodSymbol lambdaOrLocalFunctionSymbol, RewrittenMethodSymbol containingMethod)
Symbols\Extensions\RewrittenMethodSymbol.cs (5)
14protected readonly MethodSymbol _originalMethod; 19protected RewrittenMethodSymbol(MethodSymbol originalMethod, TypeMap typeMap, ImmutableArray<TypeParameterSymbol> typeParametersToAlphaRename) 30public sealed override MethodSymbol UnderlyingMethod => _originalMethod; 78public sealed override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations => ImmutableArray<MethodSymbol>.Empty;
Symbols\Extensions\SourceExtensionImplementationMethodSymbol.cs (1)
21public SourceExtensionImplementationMethodSymbol(MethodSymbol sourceMethod)
Symbols\FunctionPointers\FunctionPointerMethodSymbol.cs (2)
824public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations => ImmutableArray<MethodSymbol>.Empty;
Symbols\FunctionPointers\FunctionPointerTypeSymbol.cs (4)
221internal override IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls() 223return SpecializedCollections.EmptyEnumerable<(MethodSymbol Body, MethodSymbol Implemented)>();
Symbols\FunctionTypeSymbol.cs (2)
197internal override IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls() => throw ExceptionUtilities.Unreachable();
Symbols\LabelSymbol.cs (3)
141/// It should be the <see cref="MethodSymbol"/> containing the label in its body. 143public virtual MethodSymbol ContainingMethod 153/// It should be the <see cref="MethodSymbol"/> containing the label in its body.
Symbols\MemberSignatureComparer.cs (2)
845return ((MethodSymbol)member).CallingConvention; 856return member.Kind == SymbolKind.Method && ((MethodSymbol)member).IsVararg;
Symbols\MemberSymbolExtensions.cs (50)
40return ((MethodSymbol)member).Parameters; 58return ((MethodSymbol)member).ParameterTypesWithAnnotations; 73return ((MethodSymbol)member).IsVararg; 88return IsExtensionBlockMember((MethodSymbol)member); 96internal static bool IsExtensionBlockMember(this MethodSymbol member) 135if (member is MethodSymbol method) 154if (member is MethodSymbol method) 207if (member is MethodSymbol method) 250if (member is MethodSymbol method) 253MethodSymbol? constructed; 284constructed = (MethodSymbol?)SourceNamedTypeSymbol.ReduceExtensionMember(compilation, constructed, receiverType, out bool wasExtensionFullyInferred); 310static bool checkConstraintsIncludingExtension(MethodSymbol symbol, CSharpCompilation compilation, TypeConversions conversions) 328return ((MethodSymbol)member).ParameterRefKinds; 343return ((MethodSymbol)member).ParameterCount; 390bool isImplementableAndNotPublic(MethodSymbol accessor) 396public static bool IsImplementable(this MethodSymbol methodOpt) 401public static bool IsAccessor(this MethodSymbol methodSymbol) 408return symbol.Kind == SymbolKind.Method && IsAccessor((MethodSymbol)symbol); 411public static bool IsIndexedPropertyAccessor(this MethodSymbol methodSymbol) 417public static bool IsOperator(this MethodSymbol methodSymbol) 424return symbol.Kind == SymbolKind.Method && IsOperator((MethodSymbol)symbol); 439return symbol.Kind == SymbolKind.Method && ((MethodSymbol)symbol).MethodKind == MethodKind.Conversion; 446public static int CustomModifierCount(this MethodSymbol method) 478return ((MethodSymbol)m).CustomModifierCount(); 520return ((MethodSymbol)s).AsMember(newOwner); 540return ((MethodSymbol)symbol).Arity; 573return ((MethodSymbol)symbol).TypeParameters; 591return ((MethodSymbol)symbol).TypeArgumentsWithAnnotations.SelectAsArray(TypeMap.AsTypeSymbol); 604internal static bool IsConstructor(this MethodSymbol method) 619internal static bool HasThisConstructorInitializer(this MethodSymbol method, out ConstructorInitializerSyntax initializerSyntax) 639internal static bool IncludeFieldInitializersInBody(this MethodSymbol methodSymbol) 661foreach (var constructor in type.InstanceConstructors) 684internal static bool IsParameterlessConstructor(this MethodSymbol method) 698internal static bool IsDefaultValueTypeConstructor(this MethodSymbol method) 709internal static bool ShouldEmit(this MethodSymbol method) 739internal static MethodSymbol GetOwnOrInheritedAddMethod(this EventSymbol @event) 743MethodSymbol addMethod = @event.AddMethod; 763internal static MethodSymbol GetOwnOrInheritedRemoveMethod(this EventSymbol @event) 767MethodSymbol removeMethod = @event.RemoveMethod; 784return ((MethodSymbol)member).IsExplicitInterfaceImplementation; 836MethodSymbol method => method.PartialImplementationPart, 848MethodSymbol method => method.PartialDefinitionPart, 861var method = (MethodSymbol)member; 878return ((MethodSymbol)member).ExplicitInterfaceImplementations.Cast<MethodSymbol, Symbol>(); 893return ((MethodSymbol)member).OverriddenMethod; 908var method = (MethodSymbol)member; 944member = ((MethodSymbol)member).AssociatedSymbol ?? member;
Symbols\Metadata\PE\MemberRefMetadataDecoder.cs (5)
197private static MethodSymbol FindMethodBySignature(TypeSymbol targetTypeSymbol, string targetMemberName, SignatureHeader targetMemberSignatureHeader, int targetMemberTypeParamCount, ParamInfo<TypeSymbol>[] targetParamInfo) 201var method = member as MethodSymbol; 216private static bool MethodSymbolMatchesParamInfo(MethodSymbol candidateMethod, ParamInfo<TypeSymbol>[] targetParamInfo) 275private static bool ReturnTypesMatch(MethodSymbol candidateMethod, TypeMap candidateMethodTypeMap, ref ParamInfo<TypeSymbol> targetReturnParam)
Symbols\Metadata\PE\MetadataDecoder.cs (4)
21internal class MetadataDecoder : MetadataDecoder<PEModuleSymbol, TypeSymbol, MethodSymbol, FieldSymbol, Symbol> 488protected override MethodSymbol FindMethodSymbolInType(TypeSymbol typeSymbol, MethodDefinitionHandle targetMethodDef) 509return (MethodSymbol)memberRefDecoder.FindMember(targetMethodDef, methodsOnly: true); 602protected override MethodDefinitionHandle GetMethodHandle(MethodSymbol method)
Symbols\Metadata\PE\PEEventSymbol.cs (2)
337public override MethodSymbol AddMethod 342public override MethodSymbol RemoveMethod
Symbols\Metadata\PE\PEMethodSymbol.cs (10)
332public MethodSymbol _lazyExplicitClassOverride; 405private ImmutableArray<MethodSymbol> _lazyExplicitMethodImplementations; 1370public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations 1391foreach (var method in explicitlyOverriddenMethods) 1412var explicitInterfaceImplementationsBuilder = ArrayBuilder<MethodSymbol>.GetInstance(); 1413foreach (var method in explicitlyOverriddenMethods) 1423MethodSymbol uniqueClassOverride = null; 1424foreach (MethodSymbol method in explicitlyOverriddenMethods) 1458internal MethodSymbol ExplicitlyOverriddenClassMethod 1733static (name, value, isField) => MethodSymbol.TryDecodeUnmanagedCallersOnlyCallConvsField(name, value, isField, location: null, diagnostics: null));
Symbols\Metadata\PE\PENamedTypeSymbol.cs (18)
198public ConcurrentDictionary<MethodSymbol, MethodSymbol?>? LazyImplementationMap; 451internal MethodSymbol? GetMarkerMethodSymbol() 474public sealed override MethodSymbol? TryGetCorrespondingExtensionImplementationMethod(MethodSymbol method) 494Interlocked.CompareExchange(ref uncommon.LazyImplementationMap, new ConcurrentDictionary<MethodSymbol, MethodSymbol?>(ReferenceEqualityComparer.Instance), null); 499static MethodSymbol? findCorrespondingExtensionImplementationMethod(MethodSymbol method, PENamedTypeSymbol @this) 503if (member is not MethodSymbol { IsStatic: true } candidate) 1510internal override IEnumerable<MethodSymbol> GetMethodsToEmit() 1526var method = (MethodSymbol)members[index]; 1796foreach (MethodSymbol method in nonFieldMembers) 3105internal sealed override IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls() 3107return SpecializedCollections.EmptyEnumerable<(MethodSymbol Body, MethodSymbol Implemented)>();
Symbols\Metadata\PE\PEParameterSymbol.cs (4)
381var markerMethod = ((PENamedTypeSymbol)containingSymbol.ContainingType).GetMarkerMethodSymbol(); 886else if (ContainingSymbol is MethodSymbol { Name: WellKnownMemberNames.ExtensionMarkerMethodName } 888&& containingPE.GetMarkerMethodSymbol() is MethodSymbol markerMethod 908|| ContainingSymbol is MethodSymbol { MethodKind: MethodKind.Constructor or MethodKind.DelegateInvoke }
Symbols\Metadata\PE\PEPropertySymbol.cs (4)
511MethodSymbol getMethod = curr.GetMethod; 523MethodSymbol setMethod = curr.SetMethod; 757public override MethodSymbol GetMethod 762public override MethodSymbol SetMethod
Symbols\Metadata\PE\PETypeParameterSymbol.cs (1)
681bool inherited = (_containingSymbol.Kind == SymbolKind.Method) && ((MethodSymbol)_containingSymbol).IsOverride;
Symbols\MethodSymbol.cs (32)
28internal const MethodSymbol None = null; 45public new virtual MethodSymbol OriginalDefinition 304/// True if this <see cref="MethodSymbol"/> type supports retrieving the this parameter 343public virtual MethodSymbol ConstructedFrom 391public abstract ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations { get; } 427internal MethodSymbol GetLeastOverriddenMethod(NamedTypeSymbol accessingTypeOpt) 438private MethodSymbol GetLeastOverriddenMethodCore(NamedTypeSymbol accessingTypeOpt, bool requireSameReturnType) 441MethodSymbol m = this; 464MethodSymbol overridden = m.OverriddenMethod; 486internal MethodSymbol GetConstructedLeastOverriddenMethod(NamedTypeSymbol accessingTypeOpt, bool requireSameReturnType) 488var m = this.ConstructedFrom.GetLeastOverriddenMethodCore(accessingTypeOpt, requireSameReturnType); 500public MethodSymbol OverriddenMethod 508return (MethodSymbol)OverriddenOrHiddenMembers.GetOverriddenMember(); 511return (MethodSymbol)OverriddenOrHiddenMembersResult.GetOverriddenMember(this, OriginalDefinition.OverriddenMethod); 550var overriddenMethod = this.OverriddenMethod; 588var overriddenMethod = this.OverriddenMethod; 754public MethodSymbol? ReduceExtensionMethod(TypeSymbol receiverType, CSharpCompilation? compilation) 766public MethodSymbol? ReduceExtensionMethod(TypeSymbol receiverType, CSharpCompilation? compilation, out bool wasFullyInferred) 787public MethodSymbol ReduceExtensionMethod() 796internal virtual MethodSymbol CallsiteReducedFromMethod 806public virtual MethodSymbol PartialImplementationPart 815public virtual MethodSymbol PartialDefinitionPart 824public virtual MethodSymbol ReducedFrom 858public MethodSymbol Construct(params TypeSymbol[] typeArguments) 869public MethodSymbol Construct(ImmutableArray<TypeSymbol> typeArguments) 874internal MethodSymbol Construct(ImmutableArray<TypeWithAnnotations> typeArguments) 904internal MethodSymbol AsMember(NamedTypeSymbol newOwner) 1072static bool isGenericMethod([DisallowNull] MethodSymbol? method) 1081method = method.ContainingSymbol as MethodSymbol; 1286protected static void AddRequiredMembersMarkerAttributes(ref ArrayBuilder<CSharpAttributeData> attributes, MethodSymbol methodToAttribute) 1309protected static void AddClosedClassesFeatureRequiredAttribute(ref ArrayBuilder<CSharpAttributeData> attributes, MethodSymbol methodToAttribute) 1322public MethodSymbol? TryGetCorrespondingExtensionImplementationMethod()
Symbols\MethodSymbolExtensions.cs (17)
16public static bool IsParams(this MethodSymbol method) 21internal static bool IsSynthesizedLambda(this MethodSymbol method) 39public static bool IsRuntimeFinalizer(this MethodSymbol method, bool skipFirstMethodKindCheck = false) 46method.ParameterCount != 0 || method.Arity != 0 || !method.IsMetadataVirtual(MethodSymbol.IsMetadataVirtualOption.IgnoreInterfaceImplementationChanges)) 84public static MethodSymbol ConstructIfGeneric(this MethodSymbol method, ImmutableArray<TypeWithAnnotations> typeArguments) 95public static bool CanBeHiddenByMember(this MethodSymbol hiddenMethod, Symbol hidingMember) 124private static bool CanBeHiddenByMethodPropertyOrType(MethodSymbol method, Symbol hidingMember) 135return !method.IsStatic && hidingMember is MethodSymbol { IsStatic: false, MethodKind: MethodKind.UserDefinedOperator }; 151public static bool IsAsyncReturningVoid(this MethodSymbol method) 159public static bool IsAsyncEffectivelyReturningTask(this MethodSymbol method, CSharpCompilation compilation) 169public static bool IsAsyncEffectivelyReturningGenericTask(this MethodSymbol method, CSharpCompilation compilation) 179public static bool IsAsyncReturningIAsyncEnumerable(this MethodSymbol method, CSharpCompilation compilation) 188public static bool IsAsyncReturningIAsyncEnumerator(this MethodSymbol method, CSharpCompilation compilation) 194internal static CSharpSyntaxNode ExtractReturnTypeSyntax(this MethodSymbol method) 218internal static bool IsValidUnscopedRefAttributeTarget(this MethodSymbol method) 227internal static bool HasUnscopedRefAttributeOnMethodOrProperty(this MethodSymbol? method)
Symbols\NamedTypeSymbol.cs (34)
175public MethodSymbol? DelegateInvokeMethod 190var method = methods[0] as MethodSymbol; 209internal void AddOperators(string name, ArrayBuilder<MethodSymbol> operators) 218internal static void AddOperators(ArrayBuilder<MethodSymbol> operators, ImmutableArray<Symbol> candidates) 222if (candidate is MethodSymbol { MethodKind: MethodKind.UserDefinedOperator or MethodKind.Conversion } method) 229internal static void AddOperators(ArrayBuilder<MethodSymbol> operators, ArrayBuilder<Symbol> candidates) 233if (candidate is MethodSymbol { MethodKind: MethodKind.UserDefinedOperator or MethodKind.Conversion } method) 243public ImmutableArray<MethodSymbol> InstanceConstructors 254public ImmutableArray<MethodSymbol> StaticConstructors 265public ImmutableArray<MethodSymbol> Constructors 273private ImmutableArray<MethodSymbol> GetConstructors(bool includeInstance, bool includeStatic) 286return ImmutableArray<MethodSymbol>.Empty; 289ArrayBuilder<MethodSymbol> constructors = ArrayBuilder<MethodSymbol>.GetInstance(); 292if (candidate is MethodSymbol method) 300if (candidate is MethodSymbol method) 352private void DoGetExtensionMethods(ArrayBuilder<Symbol> methods, string? nameOpt, int arity, LookupOptions options, PooledHashSet<MethodSymbol>? implementationsToShadow) 362var method = (MethodSymbol)member; 418PooledHashSet<MethodSymbol>? implementationsToShadow = null; 438void doGetExtensionMembers(ArrayBuilder<Symbol> members, string? name, string? alternativeName, int arity, LookupOptions options, ref PooledHashSet<MethodSymbol>? implementationsToShadow, ConsList<FieldSymbol> fieldsBeingBound) 464if (candidate is MethodSymbol { IsStatic: false } shadows && 467implementationsToShadow ??= PooledHashSet<MethodSymbol>.GetInstance(); 487if ((options & LookupOptions.MustBeOperator) != 0 && member is not MethodSymbol { MethodKind: MethodKind.UserDefinedOperator }) 518public virtual MethodSymbol? TryGetCorrespondingExtensionImplementationMethod(MethodSymbol method) 1897static bool addCaseType(MethodSymbol factory, (ArrayBuilder<TypeSymbol> builder, PooledHashSet<TypeSymbol> set) arg) 1913internal MethodSymbol? ForEachUnionFactoryMethod<TArg>(Func<MethodSymbol, TArg, bool> action, TArg arg) 1926if (member is MethodSymbol method && isSuitableUnionFactory(definition, method)) 1939foreach (var ctor in this.InstanceConstructors) 1953static bool isSuitableUnionFactory(NamedTypeSymbol unionType, MethodSymbol factory) 1999internal static bool IsSuitableUnionConstructor(MethodSymbol ctor)
Symbols\NativeIntegerTypeSymbol.cs (12)
95case MethodSymbol underlyingMethod: 286internal override IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls() 288return SpecializedCollections.EmptyEnumerable<(MethodSymbol Body, MethodSymbol Implemented)>(); 350internal NativeIntegerMethodSymbol(NativeIntegerTypeSymbol container, MethodSymbol underlyingMethod, NativeIntegerPropertySymbol? associatedSymbol) 361public override MethodSymbol UnderlyingMethod { get; } 400public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations => ImmutableArray<MethodSymbol>.Empty; 505Func<NativeIntegerTypeSymbol, NativeIntegerPropertySymbol, MethodSymbol?, NativeIntegerMethodSymbol?> getAccessor) : 523public override MethodSymbol? GetMethod { get; } 525public override MethodSymbol? SetMethod { get; }
Symbols\ObsoleteAttributeHelpers.cs (1)
87symbol = ((MethodSymbol)symbol).AssociatedSymbol;
Symbols\OverriddenOrHiddenMembersHelpers.cs (36)
24internal static OverriddenOrHiddenMembersResult MakeOverriddenOrHiddenMembers(this MethodSymbol member) 96MethodSymbol accessor = member as MethodSymbol; 153MethodSymbol method => KnownOverriddenClassMethod(method), 197private static MethodSymbol KnownOverriddenClassMethod(MethodSymbol method) => 241private static OverriddenOrHiddenMembersResult MakePropertyAccessorOverriddenOrHiddenMembers(MethodSymbol accessor, PropertySymbol associatedProperty) 248MethodSymbol overriddenAccessor = null; 260MethodSymbol correspondingAccessor = accessorIsGetter ? propertyHiddenByProperty.GetMethod : propertyHiddenByProperty.SetMethod; 272MethodSymbol correspondingAccessor = accessorIsGetter ? 294bool isAccessorOverride(MethodSymbol accessor, MethodSymbol overriddenAccessor) 333private static OverriddenOrHiddenMembersResult MakeEventAccessorOverriddenOrHiddenMembers(MethodSymbol accessor, EventSymbol associatedEvent) 340MethodSymbol overriddenAccessor = null; 352MethodSymbol correspondingAccessor = accessorIsAdder ? eventHiddenByEvent.AddMethod : eventHiddenByEvent.RemoveMethod; 364MethodSymbol correspondingAccessor = eventOverriddenByEvent.GetOwnOrInheritedAccessor(accessorIsAdder); 568else if (otherMember.IsAccessor() && !((MethodSymbol)otherMember).IsIndexedPropertyAccessor()) 756if (hiddenMember.Kind != SymbolKind.Method || ((MethodSymbol)hiddenMember).CanBeHiddenByMember(hidingMember)) 880MethodSymbol methodSymbol = (MethodSymbol)member; 881return MethodSymbol.CanOverrideOrHide(methodSymbol.MethodKind) && ReferenceEquals(methodSymbol, methodSymbol.ConstructedFrom); 892MethodSymbol method = (MethodSymbol)member; 914MethodSymbol method = (MethodSymbol)member; 931internal static bool RequiresExplicitOverride(this MethodSymbol method, out bool warnAmbiguous) 937MethodSymbol csharpOverriddenMethod = method.OverriddenMethod; 941MethodSymbol runtimeOverriddenMethod = method.GetFirstRuntimeOverriddenMethodIgnoringNewSlot(out bool wasAmbiguous); 989internal static bool MethodHasRuntimeCollision(this MethodSymbol method) 1013internal static MethodSymbol GetFirstRuntimeOverriddenMethodIgnoringNewSlot(this MethodSymbol method, out bool wasAmbiguous) 1019const MethodSymbol.IsMetadataVirtualOption ignoreInterfaceImplementationChanges = MethodSymbol.IsMetadataVirtualOption.IgnoreInterfaceImplementationChanges; 1031MethodSymbol candidate = null; 1038MethodSymbol overridden = (MethodSymbol)otherMember;
Symbols\PointerTypeSymbol.cs (4)
315internal sealed override IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls() 317return SpecializedCollections.EmptyEnumerable<(MethodSymbol Body, MethodSymbol Implemented)>();
Symbols\PropertyOrEventSymbolExtensions.cs (7)
22internal static ISet<PropertySymbol> GetPropertiesForExplicitlyImplementedAccessor(MethodSymbol accessor) 27internal static ISet<EventSymbol> GetEventsForExplicitlyImplementedAccessor(MethodSymbol accessor) 33private static ISet<T> GetSymbolsForExplicitlyImplementedAccessor<T>(MethodSymbol accessor) where T : Symbol 40ImmutableArray<MethodSymbol> implementedAccessors = accessor.ExplicitInterfaceImplementations; 47foreach (var implementedAccessor in implementedAccessors) 61internal static Accessibility GetDeclaredAccessibilityFromAccessors(MethodSymbol accessor1, MethodSymbol accessor2)
Symbols\PropertySymbol.cs (3)
203public abstract MethodSymbol GetMethod 211public abstract MethodSymbol SetMethod 255MethodSymbol accessor = GetMethod ?? SetMethod;
Symbols\PropertySymbolExtensions.cs (4)
22public static MethodSymbol? GetOwnOrInheritedGetMethod(this PropertySymbol? property) 26MethodSymbol getMethod = property.GetMethod; 42public static MethodSymbol? GetOwnOrInheritedSetMethod(this PropertySymbol? property) 46MethodSymbol setMethod = property.SetMethod;
Symbols\PublicModel\MethodSymbol.cs (5)
19private readonly Symbols.MethodSymbol _underlying; 25public MethodSymbol(Symbols.MethodSymbol underlying) 32internal Symbols.MethodSymbol UnderlyingMethodSymbol => _underlying; 359var implDefinition = _underlying.OriginalDefinition.TryGetCorrespondingExtensionImplementationMethod(); 366var implementation = implDefinition.AsMember(enclosing);
Symbols\ReducedExtensionMethodSymbol.cs (15)
25private readonly MethodSymbol _reducedFrom; 38public static MethodSymbol Create(MethodSymbol method, TypeSymbol receiverType, CSharpCompilation compilation, out bool wasFullyInferred) 73public static MethodSymbol Create(MethodSymbol method) 78var constructedFrom = method.ConstructedFrom; 92private ReducedExtensionMethodSymbol(MethodSymbol reducedFrom) 113internal static MethodSymbol InferExtensionMethodTypeArguments(MethodSymbol method, TypeSymbol thisType, CSharpCompilation compilation, 242internal override MethodSymbol CallsiteReducedFromMethod 273public override MethodSymbol ReducedFrom 278public override MethodSymbol ConstructedFrom 377public override MethodSymbol OriginalDefinition 546public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations 548get { return ImmutableArray<MethodSymbol>.Empty; }
Symbols\Retargeting\RetargetingEventSymbol.cs (2)
57public override MethodSymbol? AddMethod 67public override MethodSymbol? RemoveMethod
Symbols\Retargeting\RetargetingMethodSymbol.cs (10)
34private readonly MethodSymbol _underlyingMethod; 52private ImmutableArray<MethodSymbol> _lazyExplicitInterfaceImplementations; 59public RetargetingMethodSymbol(RetargetingModuleSymbol retargetingModule, MethodSymbol underlyingMethod) 85public override MethodSymbol UnderlyingMethod 304public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations 313default(ImmutableArray<MethodSymbol>)); 319private ImmutableArray<MethodSymbol> RetargetExplicitInterfaceImplementations() 330var builder = ArrayBuilder<MethodSymbol>.GetInstance(); 334var retargeted = this.RetargetingTranslator.Retarget(impls[i], MemberSignatureComparer.RetargetedExplicitImplementationComparer); 347internal MethodSymbol ExplicitlyOverriddenClassMethod
Symbols\Retargeting\RetargetingNamedTypeSymbol.cs (11)
116public override MethodSymbol TryGetCorrespondingExtensionImplementationMethod(MethodSymbol method) 122var underlyingImplementation = _underlyingType.TryGetCorrespondingExtensionImplementationMethod(((RetargetingMethodSymbol)method).UnderlyingMethod); 186internal override IEnumerable<MethodSymbol> GetMethodsToEmit() 190foreach (MethodSymbol method in _underlyingType.GetMethodsToEmit()) 441internal override IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls() 443foreach ((MethodSymbol body, MethodSymbol implemented) in _underlyingType.SynthesizedInterfaceMethodImpls()) 445var newBody = this.RetargetingTranslator.Retarget(body, MemberSignatureComparer.RetargetedExplicitImplementationComparer); 446var newImplemented = this.RetargetingTranslator.Retarget(implemented, MemberSignatureComparer.RetargetedExplicitImplementationComparer);
Symbols\Retargeting\RetargetingPropertySymbol.cs (2)
123public override MethodSymbol GetMethod 133public override MethodSymbol SetMethod
Symbols\Retargeting\RetargetingSymbolTranslator.cs (25)
45return new RetargetingMethodSymbol(this, (MethodSymbol)symbol); 874public MethodSymbol Retarget(MethodSymbol method) 879return (MethodSymbol)this.SymbolMap.GetOrAdd(method, _retargetingModule._createRetargetingMethod); 882public MethodSymbol Retarget(MethodSymbol method, IEqualityComparer<MethodSymbol> retargetedMethodComparer) 903var retargetedDefinition = Retarget(method.OriginalDefinition, retargetedMethodComparer); 964private MethodSymbol FindMethodInRetargetedType(MethodSymbol method, NamedTypeSymbol retargetedType, IEqualityComparer<MethodSymbol> retargetedMethodComparer) 972private readonly MethodSymbol _toFind; 974private RetargetedTypeMethodFinder(RetargetingModuleSymbol retargetingModule, NamedTypeSymbol retargetedType, MethodSymbol toFind) : 981public static MethodSymbol Find(RetargetingSymbolTranslator translator, MethodSymbol method, NamedTypeSymbol retargetedType, IEqualityComparer<MethodSymbol> retargetedMethodComparer) 994private static MethodSymbol FindWorker 997MethodSymbol method, 999IEqualityComparer<MethodSymbol> retargetedMethodComparer 1027ImmutableArray<MethodSymbol>.Empty); 1033var retargetedMethod = (MethodSymbol)retargetedMember; 1158MethodSymbol oldAttributeCtor = oldAttributeData.AttributeConstructor; 1159MethodSymbol newAttributeCtor = (object)oldAttributeCtor == null ? 1349public override Symbol VisitMethod(MethodSymbol symbol, RetargetOptions options)
Symbols\SignatureOnlyMethodSymbol.cs (3)
32private readonly ImmutableArray<MethodSymbol> _explicitInterfaceImplementations; 46ImmutableArray<MethodSymbol> explicitInterfaceImplementations) 89public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations { get { return _explicitInterfaceImplementations; } }
Symbols\SignatureOnlyPropertySymbol.cs (2)
100public override MethodSymbol SetMethod { get { throw ExceptionUtilities.Unreachable(); } } 102public override MethodSymbol GetMethod { get { throw ExceptionUtilities.Unreachable(); } }
Symbols\Source\CustomModifierUtils.cs (3)
22MethodSymbol sourceMethod, 23MethodSymbol destinationMethod, 40MethodSymbol constructedSourceMethod = sourceMethod.ConstructIfGeneric(destinationMethod.TypeArgumentsWithAnnotations);
Symbols\Source\ExplicitInterfaceHelpers.cs (7)
99public static string GetMethodNameWithoutInterfaceName(this MethodSymbol method) 148internal static MethodSymbol FindExplicitlyImplementedMethod( 149this MethodSymbol implementingMethod, 156return (MethodSymbol)FindExplicitlyImplementedMember(implementingMethod, isOperator, explicitInterfaceType, interfaceMethodName, explicitInterfaceSpecifierSyntax, diagnostics); 269if (interfaceMember is MethodSymbol interfaceMethod && 292if (interfaceMember.IsAccessor() && !((MethodSymbol)interfaceMember).IsIndexedPropertyAccessor()) 365void checkAccessorIsAccessibleIfImplementable(MethodSymbol accessor)
Symbols\Source\ExtensionGroupingInfo.cs (2)
751foreach (var method in type.GetMethodsToEmit()) 897var marker = UnderlyingExtensions[0].TryGetOrCreateExtensionMarker();
Symbols\Source\LambdaSymbol.cs (2)
193public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations 195get { return ImmutableArray<MethodSymbol>.Empty; }
Symbols\Source\LocalFunctionSymbol.cs (2)
349public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations => ImmutableArray<MethodSymbol>.Empty;
Symbols\Source\ParameterHelpers.cs (5)
210var methodOwner = owner as MethodSymbol; 1117internal static MethodSymbol FindContainingGenericMethod(Symbol symbol) 1123MethodSymbol method = (MethodSymbol)current;
Symbols\Source\SourceComplexParameterSymbol.cs (8)
1268else if (this.ContainingSymbol is MethodSymbol method && 1389|| ContainingSymbol is MethodSymbol { MethodKind: MethodKind.Constructor or MethodKind.DelegateInvoke or MethodKind.LambdaMethod } 1636withElement: null, syntax, Type, out MethodSymbol? constructor, isExpanded: out _, diagnostics, isParamsModifierValidation: true)) 1646if (!binder.HasCollectionExpressionApplicableAddMethod(syntax, Type, out ImmutableArray<MethodSymbol> addMethods, diagnostics)) 1659MethodSymbol? reportAsLessVisible = null; 1661foreach (var addMethod in addMethods) 1722bool isAtLeastAsVisible(ParameterSyntax syntax, Binder binder, MethodSymbol method, BindingDiagnosticBag diagnostics) 1733void checkIsAtLeastAsVisible(ParameterSyntax syntax, Binder binder, MethodSymbol method, BindingDiagnosticBag diagnostics)
Symbols\Source\SourceConstructorSymbol.cs (2)
355public sealed override MethodSymbol? PartialDefinitionPart => SourcePartialDefinitionPart; 357public sealed override MethodSymbol? PartialImplementationPart => SourcePartialImplementationPart;
Symbols\Source\SourceCustomEventSymbol.cs (2)
185public override MethodSymbol? AddMethod 190public override MethodSymbol? RemoveMethod
Symbols\Source\SourceEventAccessorSymbol.cs (10)
19private readonly ImmutableArray<MethodSymbol> _explicitInterfaceImplementations; 52ImmutableArray<MethodSymbol> explicitInterfaceImplementations; 56explicitInterfaceImplementations = ImmutableArray<MethodSymbol>.Empty; 60MethodSymbol implementedAccessor = isAdder ? explicitlyImplementedEventOpt.AddMethod : explicitlyImplementedEventOpt.RemoveMethod; 64explicitInterfaceImplementations = (object)implementedAccessor == null ? ImmutableArray<MethodSymbol>.Empty : ImmutableArray.Create<MethodSymbol>(implementedAccessor); 81public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations 227MethodSymbol overriddenAccessor = overriddenEvent.GetOwnOrInheritedAccessor(isAdder); 243public sealed override MethodSymbol? PartialImplementationPart => _event is { IsPartialDefinition: true, OtherPartOfPartial: { } other } 247public sealed override MethodSymbol? PartialDefinitionPart => _event is { IsPartialImplementation: true, OtherPartOfPartial: { } other }
Symbols\Source\SourceEventSymbol.cs (4)
90public abstract override MethodSymbol? AddMethod { get; } 92public abstract override MethodSymbol? RemoveMethod { get; } 902private void CheckExplicitImplementationAccessor(MethodSymbol? thisAccessor, MethodSymbol? otherAccessor, EventSymbol explicitlyImplementedEvent, BindingDiagnosticBag diagnostics)
Symbols\Source\SourceFieldLikeEventSymbol.cs (2)
171public override MethodSymbol AddMethod 176public override MethodSymbol RemoveMethod
Symbols\Source\SourceFixedFieldSymbol.cs (2)
153private readonly MethodSymbol _constructor; 174internal override MethodSymbol Constructor
Symbols\Source\SourceLabelSymbol.cs (4)
15private readonly MethodSymbol _containingMethod; 27MethodSymbol containingMethod, 69MethodSymbol containingMethod, 107public override MethodSymbol ContainingMethod
Symbols\Source\SourceLocalSymbol.cs (1)
140MethodSymbol containingMethod,
Symbols\Source\SourceMemberContainerSymbol.cs (91)
1738WhereAsArray(s => !s.IsIndexer() && (!s.IsAccessor() || ((MethodSymbol)s).AssociatedSymbol?.IsIndexer() != true))); 2070foreach (var ctor in InstanceConstructors) 2085if (ForEachUnionFactoryMethod(static (MethodSymbol m, object? o) => true, null) is null) 2156var methodsBySignature = new Dictionary<MethodSymbol, MethodSymbol>(MemberSignatureComparer.DuplicateSourceComparer); 2157var conversionsAsMethods = new Dictionary<MethodSymbol, MethodSymbol>(MemberSignatureComparer.DuplicateSourceComparer); 2158var conversionsAsConversions = new HashSet<MethodSymbol>(ConversionSignatureComparer.Comparer); 2272if (symbol is MethodSymbol { MethodKind: MethodKind.Conversion } conversion) 2295if (methodsBySignature.TryGetValue(conversion, out var previousMethod)) 2302else if (symbol is MethodSymbol method) 2307if (conversionsAsMethods.TryGetValue(method, out var previousConversion)) 2316if (methodsBySignature.TryGetValue(method, out var previousMethod)) 2333private static void ReportMethodSignatureCollision(SourceMemberContainerTypeSymbol containerForDiagnostics, BindingDiagnosticBag diagnostics, MethodSymbol method1, MethodSymbol method2) 2844if (member.Kind != SymbolKind.Method || ((MethodSymbol)member).MethodKind != MethodKind.Destructor) 2899var ops1 = ArrayBuilder<MethodSymbol>.GetInstance(); 2904var ops2 = ArrayBuilder<MethodSymbol>.GetInstance(); 2912var ops2 = ArrayBuilder<MethodSymbol>.GetInstance(); 2922static void reportOperatorNeedsMatch(BindingDiagnosticBag diagnostics, string operatorName2, MethodSymbol op1) 2929static void reportCheckedOperatorNeedsMatch(BindingDiagnosticBag diagnostics, string operatorName2, MethodSymbol op1) 2936string operatorName1, ArrayBuilder<MethodSymbol> ops1) 2947ArrayBuilder<MethodSymbol> ops1, 2948ArrayBuilder<MethodSymbol> ops2, 2950Action<BindingDiagnosticBag, string, MethodSymbol> reportMatchNotFoundError) 2952foreach (var op1 in ops1) 2960foreach (var op2 in ops2) 2976internal static bool DoOperatorsPair(MethodSymbol op1, MethodSymbol op2) 3016var ops = ArrayBuilder<MethodSymbol>.GetInstance(); 3071if (member is not MethodSymbol method || !method.ShouldCheckRequiredMembers()) 3098foreach (var method in this.GetMembers(name).OfType<MethodSymbol>()) 3881!(member is MethodSymbol method && MethodCompiler.GetMethodToCompile(method) is SourceMemberMethodSymbol sourceMethod)) 4015if (member is MethodSymbol { IsImplicitlyDeclared: false, MethodKind: not (MethodKind.Constructor or MethodKind.StaticConstructor or MethodKind.Destructor or MethodKind.ExplicitInterfaceImplementation) } method && 4285(prevMethod.IsPartialImplementation || (prevMethod.OtherPartOfPartial is MethodSymbol otherImplementation && (object)otherImplementation != currentMethod))) 4291(prevMethod.IsPartialDefinition || (prevMethod.OtherPartOfPartial is MethodSymbol otherDefinition && (object)otherDefinition != currentMethod))) 4529MethodSymbol accessor = getNotSet ? propertySymbol.GetMethod : propertySymbol.SetMethod; 4554var methodSymbol = (MethodSymbol)symbol; 4593var methodSymbol = (MethodSymbol)symbol; 4746var meth = (MethodSymbol)member; 4808var meth = (MethodSymbol)member; 4855var m = s as MethodSymbol; 4900if (hasInitializers && !builder.NonTypeMembersWithPartialImplementations.Any(member => member is MethodSymbol { MethodKind: MethodKind.Constructor })) 5045case MethodSymbol { MethodKind: not (MethodKind.Ordinary or MethodKind.Constructor) }: 5100var thisEquals = addThisEquals(equalityContract); 5108var getHashCode = addGetHashCode(equalityContract); 5116var printMembers = addPrintMembersMethod(membersSoFar); 5154ImmutableArray<MethodSymbol>.Empty); 5162var deconstruct = (MethodSymbol)existingDeconstructMethod; 5202ImmutableArray<MethodSymbol>.Empty); 5216var constructor = (MethodSymbol)existingConstructor; 5235MethodSymbol addPrintMembersMethod(IEnumerable<Symbol> userDefinedMembers) 5254explicitInterfaceImplementations: ImmutableArray<MethodSymbol>.Empty); 5256MethodSymbol printMembersMethod; 5264printMembersMethod = (MethodSymbol)existingPrintMembersMethod; 5295void addToStringMethod(MethodSymbol printMethod) 5309explicitInterfaceImplementations: ImmutableArray<MethodSymbol>.Empty); 5311var baseToStringMethod = getBaseToStringMethod(); 5338var toStringMethod = (MethodSymbol)existingToStringMethod; 5349MethodSymbol? getBaseToStringMethod() 5357if (member is not MethodSymbol method) 5464void addObjectEquals(MethodSymbol thisEquals) 5469MethodSymbol addGetHashCode(PropertySymbol? equalityContract) 5483ImmutableArray<MethodSymbol>.Empty); 5485MethodSymbol getHashCode; 5494getHashCode = (MethodSymbol)existingHashCodeMethod; 5562MethodSymbol addThisEquals(PropertySymbol? equalityContract) 5582ImmutableArray<MethodSymbol>.Empty); 5584MethodSymbol thisEquals; 5593thisEquals = (MethodSymbol)existingEqualsMethod; 5656var method = (MethodSymbol)member; 6114private void AddAccessorIfAvailable(ArrayBuilder<Symbol> symbols, MethodSymbol? accessorOpt) 6279if (member is MethodSymbol { MethodKind: MethodKind.Ordinary }) 6307ImmutableArray<(MethodSymbol Body, MethodSymbol Implemented)>.Empty); 6310public readonly ImmutableArray<(MethodSymbol Body, MethodSymbol Implemented)> MethodImpls; 6314ImmutableArray<(MethodSymbol Body, MethodSymbol Implemented)> methodImpls) 6322ImmutableArray<(MethodSymbol Body, MethodSymbol Implemented)> methodImpls)
Symbols\Source\SourceMemberContainerSymbol_ImplementationChecks.cs (62)
18internal delegate void ReportMismatchInReturnType<TArg>(BindingDiagnosticBag bag, MethodSymbol overriddenMethod, MethodSymbol overridingMethod, bool topLevel, TArg arg); 19internal delegate void ReportMismatchInParameterType<TArg>(BindingDiagnosticBag bag, MethodSymbol overriddenMethod, MethodSymbol overridingMethod, ParameterSymbol parameter, bool topLevel, TArg arg); 73internal sealed override IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls() 115var methodImpls = ArrayBuilder<(MethodSymbol Body, MethodSymbol Implemented)>.GetInstance(); 237var associatedPropertyOrEvent = interfaceMemberKind == SymbolKind.Method ? ((MethodSymbol)interfaceMember).AssociatedSymbol : null; 551var method = (MethodSymbol)member; 552if (MethodSymbol.CanOverrideOrHide(method.MethodKind) && !method.IsAccessor()) 573MethodSymbol overridden = method.GetFirstRuntimeOverriddenMethodIgnoringNewSlot(out _); 587var getMethod = property.GetMethod; 588var setMethod = property.SetMethod; 628var addMethod = @event.AddMethod; 629var removeMethod = @event.RemoveMethod; 719if (hiddenMember.Kind == SymbolKind.Method && !((MethodSymbol)hiddenMember).CanBeHiddenByMember(symbol)) 797associatedPropertyOrEvent = ((MethodSymbol)overridingMember).AssociatedSymbol; 806? ((MethodSymbol)overridingMember).ParameterTypesWithAnnotations 870if (!this.ContainingAssembly.RuntimeSupportsCovariantReturnsOfClasses && overridingMember is MethodSymbol overridingMethod) 875var ambiguousMethod = overridingMethod.OverriddenMethod; 907!(overridingMemberIsMethod && ((MethodSymbol)overriddenMember).MethodKind == MethodKind.Destructor)) //destructors are metadata virtual 936else if (overriddenMember is MethodSymbol overridden && overridden.IsOperator() != ((MethodSymbol)overridingMember).IsOperator()) 1006var overridingMethod = (MethodSymbol)overridingMember; 1007var overriddenMethod = (MethodSymbol)overriddenMember; 1125MethodSymbol overriddenGetMethod = overriddenProperty.GetOwnOrInheritedGetMethod(); 1135var ownOrInheritedOverriddenSetMethod = overriddenProperty.GetOwnOrInheritedSetMethod(); 1156MethodSymbol ownOrInheritedGetMethod = overridingProperty.GetOwnOrInheritedGetMethod(); 1163MethodSymbol ownOrInheritedSetMethod = overridingProperty.GetOwnOrInheritedSetMethod(); 1176MethodSymbol overriddenMethod, 1177MethodSymbol overridingMethod, 1253(BindingDiagnosticBag diagnostics, MethodSymbol overriddenMethod, MethodSymbol overridingMethod, bool topLevel, Location location) 1260(BindingDiagnosticBag diagnostics, MethodSymbol overriddenMethod, MethodSymbol overridingMethod, ParameterSymbol overridingParameter, bool topLevel, Location location) 1271MethodSymbol baseMethod, 1272MethodSymbol overrideMethod, 1412internal static bool RequiresValidScopedOverrideForRefSafety(MethodSymbol? method, ParameterSymbol? overrideThisParameter) 1471internal static bool ReportInvalidScopedOverrideAsError(MethodSymbol baseMethod, MethodSymbol overrideMethod) 1482MethodSymbol? baseMethod, 1483MethodSymbol? overrideMethod, 1535MethodSymbol? baseMethod, 1536MethodSymbol? overrideMethod, 1686if (hidingMember is MethodSymbol hidingMethod && hiddenMembers[0] is MethodSymbol hiddenMethod) 1746var associatedPropertyOrEvent = ((MethodSymbol)hidingMember).AssociatedSymbol; 1864private (SynthesizedExplicitImplementationForwardingMethod? ForwardingMethod, (MethodSymbol Body, MethodSymbol Implemented)? MethodImpl) 1883MethodSymbol interfaceMethod = (MethodSymbol)interfaceMember; 1884MethodSymbol implementingMethod = (MethodSymbol)implementingMember; 1894MethodSymbol implementingMethodOriginalDefinition = implementingMethod.OriginalDefinition; 1913else if (implementingMethod.IsMetadataVirtual(MethodSymbol.IsMetadataVirtualOption.IgnoreInterfaceImplementationChanges)) 1966private static bool IsPossibleImplementationUnderRuntimeRules(MethodSymbol implementingMethod, NamedTypeSymbol @interface) 1990private static bool IsOverrideOfPossibleImplementationUnderRuntimeRules(MethodSymbol implementingMethod, NamedTypeSymbol @interface) 1992MethodSymbol curr = implementingMethod;
Symbols\Source\SourceMemberMethodSymbol.cs (3)
844public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations 848return ImmutableArray<MethodSymbol>.Empty; 1003internal static byte? ComputeNullableContextValue(MethodSymbol method)
Symbols\Source\SourceMethodSymbol.cs (4)
22/// array of types, indexed by the constrained type parameter in <see cref="MethodSymbol.TypeParameters"/>. 28/// array of kinds, indexed by the constrained type parameter in <see cref="MethodSymbol.TypeParameters"/>. 144internal static void AddSynthesizedAttributes(MethodSymbol target, PEModuleBuilder moduleBuilder, ref ArrayBuilder<CSharpAttributeData> attributes) 287internal static bool IsInstanceIncrementDecrementOrCompoundAssignmentOperator(MethodSymbol target)
Symbols\Source\SourceMethodSymbolWithAttributes.cs (4)
841var implementationPart = this.PartialImplementationPart ?? this; 849for (MethodSymbol? current = this; current is object; current = current.ContainingSymbol as MethodSymbol) 1617static bool isBadAsyncReturn(MethodSymbol methodSymbol)
Symbols\Source\SourceNamedTypeSymbol.cs (4)
1837var parameterlessConstructor = InstanceConstructors.FirstOrDefault(c => c.ParameterCount == 0); 1941&& !GetMembers().All(m => m is not MethodSymbol { MethodKind: MethodKind.Constructor, ObsoleteKind: ObsoleteAttributeKind.None } method 2001foreach (var slice in GetMembers(WellKnownMemberNames.SliceMethodName).OfType<MethodSymbol>())
Symbols\Source\SourceNamedTypeSymbol_Extension.cs (13)
29public MethodSymbol? LazyExtensionMarker = ErrorMethodSymbol.UnknownMethod; 31public ImmutableDictionary<MethodSymbol, MethodSymbol>? LazyImplementationMap; 991static void appendAttributeSignature(MethodSymbol constructor, StringBuilder builder) 1020var markerMethod = TryGetOrCreateExtensionMarker(); 1031public sealed override MethodSymbol? TryGetCorrespondingExtensionImplementationMethod(MethodSymbol method) 1051var builder = ImmutableDictionary.CreateBuilder<MethodSymbol, MethodSymbol>(ReferenceEqualityComparer.Instance); 1055Select(static m => new KeyValuePair<MethodSymbol, MethodSymbol>(m.UnderlyingMethod, m))); 1064internal MethodSymbol? TryGetOrCreateExtensionMarker() 1080MethodSymbol? tryCreateExtensionMarker()
Symbols\Source\SourceOrdinaryMethodOrUserDefinedOperatorSymbol.cs (8)
19private ImmutableArray<MethodSymbol> _lazyExplicitInterfaceImplementations; 40protected MethodSymbol? MethodChecks(TypeWithAnnotations returnType, ImmutableArray<ParameterSymbol> parameters, BindingDiagnosticBag diagnostics) 87MethodSymbol? overriddenOrExplicitlyImplementedMethod = null; 95_lazyExplicitInterfaceImplementations = ImmutableArray<MethodSymbol>.Empty; 133_lazyExplicitInterfaceImplementations = ImmutableArray.Create<MethodSymbol>(overriddenOrExplicitlyImplementedMethod); 144_lazyExplicitInterfaceImplementations = ImmutableArray<MethodSymbol>.Empty; 155protected abstract MethodSymbol? FindExplicitlyImplementedMethod(BindingDiagnosticBag diagnostics); 205public sealed override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations
Symbols\Source\SourceOrdinaryMethodSymbol.cs (6)
366public sealed override MethodSymbol PartialDefinitionPart 374public sealed override MethodSymbol PartialImplementationPart 490MethodSymbol constructedDefinition = definition.ConstructIfGeneric(TypeMap.TypeParametersAsTypeSymbolsWithIgnoredAnnotations(implementation.TypeParameters)); 669MethodSymbol? overriddenOrExplicitlyImplementedMethod = MethodChecks(returnType, parameters, diagnostics); 981protected sealed override MethodSymbol FindExplicitlyImplementedMethod(BindingDiagnosticBag diagnostics) 1059protected sealed override MethodSymbol FindExplicitlyImplementedMethod(BindingDiagnosticBag diagnostics)
Symbols\Source\SourceParameterSymbol.cs (2)
290MethodSymbol owningMethod = ContainingSymbol as MethodSymbol;
Symbols\Source\SourcePropertyAccessorSymbol.cs (13)
24private ImmutableArray<MethodSymbol> _lazyExplicitInterfaceImplementations; 302MethodSymbol implementedMethod = explicitInterfaceImplementations[0]; 311MethodSymbol overriddenMethod = this.OverriddenMethod; 656public sealed override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations 663ImmutableArray<MethodSymbol> explicitInterfaceImplementations; 667explicitInterfaceImplementations = ImmutableArray<MethodSymbol>.Empty; 671MethodSymbol implementedAccessor = this.MethodKind == MethodKind.PropertyGet 676? ImmutableArray<MethodSymbol>.Empty 677: ImmutableArray.Create<MethodSymbol>(implementedAccessor); 743MethodSymbol? implementedAccessor = isGetMethod 758MethodSymbol overriddenMethod = this.OverriddenMethod; 868public sealed override MethodSymbol? PartialImplementationPart => _property is SourcePropertySymbol { IsPartialDefinition: true, OtherPartOfPartial: { } other } 872public sealed override MethodSymbol? PartialDefinitionPart => _property is SourcePropertySymbol { IsPartialImplementation: true, OtherPartOfPartial: { } other }
Symbols\Source\SourcePropertySymbolBase.cs (7)
647public sealed override MethodSymbol? GetMethod 655public sealed override MethodSymbol? SetMethod 1202private void CheckExplicitImplementationAccessor(MethodSymbol thisAccessor, MethodSymbol otherAccessor, PropertySymbol explicitlyImplementedProperty, BindingDiagnosticBag diagnostics) 1270MethodSymbol overriddenAccessor = this.GetOwnOrInheritedSetMethod(); 1276MethodSymbol overriddenAccessor = this.GetOwnOrInheritedGetMethod(); 1658static bool isNullOrValidAccessor(MethodSymbol? accessor)
Symbols\Source\SourceTypeParameterSymbol.cs (8)
789private MethodSymbol _lazyOverriddenMethod = ErrorMethodSymbol.UnknownMethod; 803var overriddenMethod = this.OverriddenMethod; 813var overriddenMethod = this.OverriddenMethod; 830private MethodSymbol OverriddenMethod 842protected abstract MethodSymbol GetOverriddenMethod(SourceOrdinaryMethodSymbol overridingMethod); 853protected override MethodSymbol GetOverriddenMethod(SourceOrdinaryMethodSymbol overridingMethod) 855MethodSymbol method = overridingMethod; 874protected override MethodSymbol GetOverriddenMethod(SourceOrdinaryMethodSymbol overridingMethod)
Symbols\Source\SourceUserDefinedOperatorSymbolBase.cs (1)
435protected sealed override MethodSymbol FindExplicitlyImplementedMethod(BindingDiagnosticBag diagnostics)
Symbols\Source\SynthesizedAttributeData.cs (5)
17public static SynthesizedAttributeData Create(CSharpCompilation compilation, MethodSymbol wellKnownMember, ImmutableArray<TypedConstant> arguments, ImmutableArray<KeyValuePair<string, TypedConstant>> namedArguments) 30private readonly MethodSymbol _wellKnownMember; 34internal FromMethodAndArguments(CSharpCompilation compilation, MethodSymbol wellKnownMember, ImmutableArray<TypedConstant> arguments, ImmutableArray<KeyValuePair<string, TypedConstant>> namedArguments) 48public override MethodSymbol AttributeConstructor => _wellKnownMember; 78public override MethodSymbol? AttributeConstructor => _original.AttributeConstructor;
Symbols\Source\SynthesizedSourceOrdinaryMethodSymbol.cs (1)
40protected sealed override MethodSymbol? FindExplicitlyImplementedMethod(BindingDiagnosticBag diagnostics) => null;
Symbols\Source\ThisParameterSymbol.cs (3)
136private readonly MethodSymbol? _containingMethod; 139internal ThisParameterSymbol(MethodSymbol forMethod) : this(forMethod, forMethod.ContainingType) 143internal ThisParameterSymbol(MethodSymbol? forMethod, TypeSymbol containingType)
Symbols\SubstitutedEventSymbol.cs (4)
59public override MethodSymbol? AddMethod 63MethodSymbol? originalAddMethod = OriginalDefinition.AddMethod; 68public override MethodSymbol? RemoveMethod 72MethodSymbol? originalRemoveMethod = OriginalDefinition.RemoveMethod;
Symbols\SubstitutedMethodSymbol.cs (18)
26private readonly MethodSymbol _underlyingMethod; 28private readonly MethodSymbol _constructedFrom; 36private ImmutableArray<MethodSymbol> _lazyExplicitInterfaceImplementations; 41internal SubstitutedMethodSymbol(NamedTypeSymbol containingSymbol, MethodSymbol originalDefinition) 48protected SubstitutedMethodSymbol(Symbol containingSymbol, TypeMap map, MethodSymbol originalDefinition, MethodSymbol constructedFrom) 68public override MethodSymbol UnderlyingMethod 76public override MethodSymbol ConstructedFrom 143public sealed override MethodSymbol OriginalDefinition 151internal sealed override MethodSymbol CallsiteReducedFromMethod 155var method = OriginalDefinition.ReducedFrom; 164var reduced = this.CallsiteReducedFromMethod; 187public sealed override MethodSymbol ReducedFrom 274public sealed override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations 280return ImmutableArray<MethodSymbol>.Empty; 288default(ImmutableArray<MethodSymbol>)); 442MethodSymbol other = obj as MethodSymbol;
Symbols\SubstitutedNamedTypeSymbol.cs (7)
375internal sealed override IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls() 382foreach ((MethodSymbol body, MethodSymbol implemented) in OriginalDefinition.SynthesizedInterfaceMethodImpls()) 384var newBody = ExplicitInterfaceHelpers.SubstituteExplicitInterfaceImplementation(body, this.TypeSubstitution); 385var newImplemented = ExplicitInterfaceHelpers.SubstituteExplicitInterfaceImplementation(implemented, this.TypeSubstitution); 461internal override IEnumerable<MethodSymbol> GetMethodsToEmit()
Symbols\SubstitutedParameterSymbol.cs (1)
19internal SubstitutedParameterSymbol(MethodSymbol containingSymbol, TypeMap map, ParameterSymbol originalParameter) :
Symbols\SubstitutedPropertySymbol.cs (4)
86public override MethodSymbol GetMethod 90MethodSymbol originalGetMethod = OriginalDefinition.GetMethod; 95public override MethodSymbol SetMethod 99MethodSymbol originalSetMethod = OriginalDefinition.SetMethod;
Symbols\SubstitutedTypeParameterSymbol.cs (2)
74MethodSymbol reducedFrom = ((MethodSymbol)_container).ReducedFrom;
Symbols\Symbol.cs (5)
673var method = (MethodSymbol)this; 734var method = (MethodSymbol)this; 1255this is MethodSymbol method && method.MethodKind == MethodKind.FunctionPointerSignature ?
Symbols\Symbol_Attributes.cs (3)
55var method = (MethodSymbol)this; 678Debug.Assert(!binder.InAttributeArgument || this is MethodSymbol { MethodKind: MethodKind.LambdaMethod or MethodKind.LocalFunction }, "Possible cycle in attribute binding");
Symbols\SymbolExtensions.cs (17)
150var method = (MethodSymbol)containingMember; 168MethodSymbol method = (MethodSymbol)symbol; 209return ((MethodSymbol)symbol).ConstructedFrom; 340return ((MethodSymbol)symbol).Arity; 467MethodSymbol method => method.ReturnTypeFlowAnalysisAnnotations, 487MethodSymbol method = (MethodSymbol)symbol; 535SymbolKind.Method => ((MethodSymbol)symbol).RequiresInstanceReceiver, 557internal static IMethodSymbol? GetPublicSymbol(this MethodSymbol? symbol) 732internal static ImmutableArray<IMethodSymbol> GetPublicSymbols(this ImmutableArray<MethodSymbol> symbols) 796internal static MethodSymbol? GetSymbol(this IMethodSymbol? symbol) 798return symbol.GetSymbol<MethodSymbol>(); 815internal static bool ShouldCheckRequiredMembers(this MethodSymbol method) 820Debug.Assert(symbol is MethodSymbol or PropertySymbol); 821return symbol is MethodSymbol method ? method.OverloadResolutionPriority : ((PropertySymbol)symbol).OverloadResolutionPriority;
Symbols\SymbolVisitor.cs (1)
70public virtual void VisitMethod(MethodSymbol symbol)
Symbols\SymbolVisitor`1.cs (1)
70public virtual TResult VisitMethod(MethodSymbol symbol)
Symbols\SymbolVisitor`2.cs (2)
185/// Called when visiting a <see cref="MethodSymbol" />; Override this with specific 191public virtual TResult VisitMethod(MethodSymbol symbol, TArgument argument)
Symbols\Synthesized\ReadOnlyListType\SynthesizedReadOnlyListConstructor.cs (1)
29var baseConstructor = ContainingType.BaseTypeNoUseSiteDiagnostics.InstanceConstructors.Single();
Symbols\Synthesized\ReadOnlyListType\SynthesizedReadOnlyListEnumeratorConstructor.cs (1)
29var baseConstructor = ContainingType.BaseTypeNoUseSiteDiagnostics.InstanceConstructors.Single();
Symbols\Synthesized\ReadOnlyListType\SynthesizedReadOnlyListEnumeratorTypeSymbol.cs (7)
84((MethodSymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_IEnumerator__MoveNext)), 103((MethodSymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_IEnumerator__Reset)), 116((MethodSymbol)compilation.GetSpecialTypeMember(SpecialMember.System_IDisposable__Dispose)), 284internal override IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls() => SpecializedCollections.EmptyEnumerable<(MethodSymbol Body, MethodSymbol Implemented)>();
Symbols\Synthesized\ReadOnlyListType\SynthesizedReadOnlyListMethod.cs (3)
7internal delegate BoundStatement GenerateMethodBodyDelegate(SyntheticBoundNodeFactory factory, MethodSymbol method, MethodSymbol interfaceMethod); 13internal SynthesizedReadOnlyListMethod(NamedTypeSymbol containingType, MethodSymbol interfaceMethod, GenerateMethodBodyDelegate generateMethodBody) :
Symbols\Synthesized\ReadOnlyListType\SynthesizedReadOnlyListProperty.cs (2)
43public override MethodSymbol? GetMethod { get; } 45public override MethodSymbol? SetMethod { get; }
Symbols\Synthesized\ReadOnlyListType\SynthesizedReadOnlyListTypeSymbol.cs (62)
322(MethodSymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_IEnumerable__GetEnumerator), 342(MethodSymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_ICollection__CopyTo)!, 347(PropertySymbol)((MethodSymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_IList__get_Item)!).AssociatedSymbol, 363(MethodSymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_IList__Add)!, 368(MethodSymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_IList__Clear)!, 373(MethodSymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_IList__Contains)!, 378(MethodSymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_IList__IndexOf)!, 383(MethodSymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_IList__Insert)!, 388(MethodSymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_IList__Remove)!, 393(MethodSymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_IList__RemoveAt)!, 398((MethodSymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_Generic_IEnumerable_T__GetEnumerator)!).AsMember(iEnumerableT), 410((PropertySymbol)((MethodSymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_Generic_IReadOnlyList_T__get_Item)!).AssociatedSymbol).AsMember(iReadOnlyListT), 426((MethodSymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_Generic_ICollection_T__Add)!).AsMember(iCollectionT), 431((MethodSymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_Generic_ICollection_T__Clear)!).AsMember(iCollectionT), 436((MethodSymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_Generic_ICollection_T__Contains)!).AsMember(iCollectionT), 441((MethodSymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_Generic_ICollection_T__CopyTo)!).AsMember(iCollectionT), 446((MethodSymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_Generic_ICollection_T__Remove)!).AsMember(iCollectionT), 451((PropertySymbol)((MethodSymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_Generic_IList_T__get_Item)!).AssociatedSymbol).AsMember(iListT), 457((MethodSymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_Generic_IList_T__IndexOf)!).AsMember(iListT), 462((MethodSymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_Generic_IList_T__Insert)!).AsMember(iListT), 467((MethodSymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_Generic_IList_T__RemoveAt)!).AsMember(iListT), 472static BoundStatement generateGetEnumerator(SyntheticBoundNodeFactory f, MethodSymbol method, MethodSymbol interfaceMethod) 504static BoundStatement generateCount(SyntheticBoundNodeFactory f, MethodSymbol method, MethodSymbol interfaceMethod) 532static BoundStatement generateIsSynchronized(SyntheticBoundNodeFactory f, MethodSymbol method, MethodSymbol interfaceMethod) 539static BoundStatement generateSyncRoot(SyntheticBoundNodeFactory f, MethodSymbol method, MethodSymbol interfaceMethod) 557static BoundStatement generateIsFixedSize(SyntheticBoundNodeFactory f, MethodSymbol method, MethodSymbol interfaceMethod) 564static BoundStatement generateIsReadOnly(SyntheticBoundNodeFactory f, MethodSymbol method, MethodSymbol interfaceMethod) 571static BoundStatement generateContains(SyntheticBoundNodeFactory f, MethodSymbol method, MethodSymbol interfaceMethod) 604var listMember = (MethodSymbol)containingType.GetFieldTypeMember(WellKnownMember.System_Collections_Generic_List_T__Contains); 614static BoundStatement generateCopyTo(SyntheticBoundNodeFactory f, MethodSymbol method, MethodSymbol interfaceMethod) 626var arraySetValueMethod = (MethodSymbol)method.DeclaringCompilation.GetSpecialTypeMember(SpecialMember.System_Array__SetValue)!; 671var listMember = (MethodSymbol)containingType.GetFieldTypeMember(WellKnownMember.System_Collections_Generic_List_T__CopyTo); 683static BoundStatement generateIndexer(SyntheticBoundNodeFactory f, MethodSymbol method, MethodSymbol interfaceMethod) 694var constructor = (MethodSymbol)method.DeclaringCompilation.GetWellKnownTypeMember(WellKnownMember.System_IndexOutOfRangeException__ctor)!; 710var listMember = (PropertySymbol)((MethodSymbol)containingType.GetFieldTypeMember(WellKnownMember.System_Collections_Generic_List_T__get_Item)).AssociatedSymbol; 717static BoundStatement generateIndexOf(SyntheticBoundNodeFactory f, MethodSymbol method, MethodSymbol interfaceMethod) 754var listMember = (MethodSymbol)containingType.GetFieldTypeMember(WellKnownMember.System_Collections_Generic_List_T__IndexOf); 763static BoundStatement generateNotSupportedException(SyntheticBoundNodeFactory f, MethodSymbol method, MethodSymbol interfaceMethod) 765var constructor = (MethodSymbol)method.DeclaringCompilation.GetWellKnownTypeMember(WellKnownMember.System_NotSupportedException__ctor)!; 785var equalityComparer_get_Default = f.WellKnownMethod( 787var equalityComparer_Equals = f.WellKnownMethod( 1008internal override IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls() => SpecializedCollections.EmptyEnumerable<(MethodSymbol Body, MethodSymbol Implemented)>();
Symbols\Synthesized\Records\SynthesizedRecordBaseEquals.cs (1)
42var overridden = OverriddenMethod;
Symbols\Synthesized\Records\SynthesizedRecordClone.cs (7)
83private static MethodSymbol? VirtualCloneInBase(NamedTypeSymbol containingType) 121foreach (var member in members) 123var ctor = (MethodSymbol)member; 141internal static MethodSymbol? FindValidCloneMethod(TypeSymbol containingType, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 156MethodSymbol? candidate = null; 160if (member is MethodSymbol
Symbols\Synthesized\Records\SynthesizedRecordCopyCtor.cs (6)
89internal static MethodSymbol? FindCopyConstructor(NamedTypeSymbol containingType, NamedTypeSymbol within, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo) 91MethodSymbol? bestCandidate = null; 93foreach (var member in containingType.InstanceConstructors) 135if (member is MethodSymbol { ContainingType.IsRecord: true, MethodKind: MethodKind.Constructor } method) 143internal static bool HasCopyConstructorSignature(MethodSymbol member) 146return member is MethodSymbol { IsStatic: false, ParameterCount: 1, Arity: 0 } method &&
Symbols\Synthesized\Records\SynthesizedRecordDeconstruct.cs (1)
107var getterMethod = property.GetMethod;
Symbols\Synthesized\Records\SynthesizedRecordEqualityOperator.cs (2)
42MethodSymbol? equals = null; 45if (member is MethodSymbol candidate && candidate.ParameterCount == 1 && candidate.Parameters[0].RefKind == RefKind.None &&
Symbols\Synthesized\Records\SynthesizedRecordEquals.cs (1)
105MethodSymbol? baseEquals = ContainingType.GetMembersUnordered().OfType<SynthesizedRecordBaseEquals>().Single().OverriddenMethod;
Symbols\Synthesized\Records\SynthesizedRecordGetHashCode.cs (5)
46MethodSymbol? equalityComparer_GetHashCode = null; 47MethodSymbol? equalityComparer_get_Default = null; 79var overridden = OverriddenMethod; 126static void ensureEqualityComparerHelpers(SyntheticBoundNodeFactory F, [NotNull] ref MethodSymbol? equalityComparer_GetHashCode, [NotNull] ref MethodSymbol? equalityComparer_get_Default)
Symbols\Synthesized\Records\SynthesizedRecordObjectMethod.cs (3)
31internal static bool VerifyOverridesMethodFromObject(MethodSymbol overriding, SpecialMember overriddenSpecialMember, BindingDiagnosticBag diagnostics) 41var overridden = overriding.OverriddenMethod?.OriginalDefinition; 45MethodSymbol leastOverridden = overriding.GetLeastOverriddenMethod(accessingTypeOpt: null);
Symbols\Synthesized\Records\SynthesizedRecordObjEquals.cs (2)
17private readonly MethodSymbol _typedRecordEquals; 19public SynthesizedRecordObjEquals(SourceMemberContainerTypeSymbol containingType, MethodSymbol typedRecordEquals, int memberOffset)
Symbols\Synthesized\Records\SynthesizedRecordPrintMembers.cs (6)
107var overridden = OverriddenMethod; 144var ensureStackMethod = F.WellKnownMethod( 156MethodSymbol? basePrintMethod = OverriddenMethod; 267internal static void VerifyOverridesPrintMembersFromBase(MethodSymbol overriding, BindingDiagnosticBag diagnostics) 290var overridden = overriding.OverriddenMethod; 325var getterMethod = property.GetMethod;
Symbols\Synthesized\Records\SynthesizedRecordToString.cs (3)
24private readonly MethodSymbol _printMethod; 25public SynthesizedRecordToString(SourceMemberContainerTypeSymbol containingType, MethodSymbol printMethod, int memberOffset) 57var stringBuilderCtor = F.WellKnownMethod(WellKnownMember.System_Text_StringBuilder__ctor);
Symbols\Synthesized\SynthesizedCollectionBuilderProjectedMethodSymbol.cs (4)
34MethodSymbol originalCollectionBuilderMethod) : WrappedMethodSymbol 36private readonly MethodSymbol _originalCollectionBuilderMethod = originalCollectionBuilderMethod; 40public override MethodSymbol UnderlyingMethod => _originalCollectionBuilderMethod; 112public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations => throw ExceptionUtilities.Unreachable();
Symbols\Synthesized\SynthesizedContainer.cs (6)
46internal virtual MethodSymbol Constructor => null; 129var ctor = Constructor; 218internal sealed override IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls() 220return SpecializedCollections.EmptyEnumerable<(MethodSymbol Body, MethodSymbol Implemented)>();
Symbols\Synthesized\SynthesizedDelegateSymbol.cs (2)
188public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations 190get { return ImmutableArray<MethodSymbol>.Empty; }
Symbols\Synthesized\SynthesizedEmbeddedAttributeSymbol.cs (9)
53public new abstract ImmutableArray<MethodSymbol> Constructors { get; } 215internal sealed override IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls() 217return SpecializedCollections.EmptyEnumerable<(MethodSymbol Body, MethodSymbol Implemented)>(); 247private readonly ImmutableArray<MethodSymbol> _constructors; 256_constructors = ImmutableArray.Create<MethodSymbol>(new SynthesizedEmbeddedAttributeConstructorSymbol(this, m => ImmutableArray<ParameterSymbol>.Empty)); 259public override ImmutableArray<MethodSymbol> Constructors => _constructors; 268Func<MethodSymbol, ImmutableArray<ParameterSymbol>> getParameters) :
Symbols\Synthesized\SynthesizedEmbeddedExtensionMarkerNameAttributeSymbol.cs (3)
15private readonly ImmutableArray<MethodSymbol> _constructors; 39ImmutableArray<ParameterSymbol> getConstructorParameters(MethodSymbol ctor) 53public override ImmutableArray<MethodSymbol> Constructors => _constructors;
Symbols\Synthesized\SynthesizedEmbeddedLifetimeAnnotationAttributeSymbol.cs (3)
12private readonly ImmutableArray<MethodSymbol> _constructors; 21_constructors = ImmutableArray.Create<MethodSymbol>( 28public override ImmutableArray<MethodSymbol> Constructors => _constructors;
Symbols\Synthesized\SynthesizedEmbeddedMemorySafetyRulesAttributeSymbol.cs (2)
31private readonly ImmutableArray<MethodSymbol> _constructors; 74public override ImmutableArray<MethodSymbol> Constructors => _constructors;
Symbols\Synthesized\SynthesizedEmbeddedNativeIntegerAttributeSymbol.cs (3)
17private readonly ImmutableArray<MethodSymbol> _constructors; 46_constructors = ImmutableArray.Create<MethodSymbol>( 62public override ImmutableArray<MethodSymbol> Constructors => _constructors;
Symbols\Synthesized\SynthesizedEmbeddedNullableAttributeSymbol.cs (4)
19private readonly ImmutableArray<MethodSymbol> _constructors; 50_constructors = ImmutableArray.Create<MethodSymbol>( 66public override ImmutableArray<MethodSymbol> Constructors => _constructors; 118Func<MethodSymbol, ImmutableArray<ParameterSymbol>> getParameters,
Symbols\Synthesized\SynthesizedEmbeddedNullableContextAttributeSymbol.cs (3)
19private readonly ImmutableArray<MethodSymbol> _constructors; 38_constructors = ImmutableArray.Create<MethodSymbol>( 50public override ImmutableArray<MethodSymbol> Constructors => _constructors;
Symbols\Synthesized\SynthesizedEmbeddedNullablePublicOnlyAttributeSymbol.cs (3)
19private readonly ImmutableArray<MethodSymbol> _constructors; 38_constructors = ImmutableArray.Create<MethodSymbol>( 50public override ImmutableArray<MethodSymbol> Constructors => _constructors;
Symbols\Synthesized\SynthesizedEmbeddedRefSafetyRulesAttributeSymbol.cs (3)
17private readonly ImmutableArray<MethodSymbol> _constructors; 36_constructors = ImmutableArray.Create<MethodSymbol>( 45public override ImmutableArray<MethodSymbol> Constructors => _constructors;
Symbols\Synthesized\SynthesizedEntryPointSymbol.cs (6)
222public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations 224get { return ImmutableArray<MethodSymbol>.Empty; } 295private static BoundCall CreateParameterlessCall(CSharpSyntaxNode syntax, BoundExpression receiver, ThreeState receiverIsSubjectToCloning, MethodSymbol method) 348internal readonly MethodSymbol UserMain; 350internal AsyncForwardEntryPoint(CSharpCompilation compilation, NamedTypeSymbol containingType, MethodSymbol userMain) : 387if (Binder.TryGetSpecialTypeMember(compilation, specialMember, _userMainReturnTypeSyntax, BindingDiagnosticBag.Discarded, out MethodSymbol handleAsyncEntryPointMethod, isOptional: true)
Symbols\Synthesized\SynthesizedExplicitImplementationForwardingMethod.cs (4)
25private readonly MethodSymbol _implementingMethod; 27public SynthesizedExplicitImplementationForwardingMethod(MethodSymbol interfaceMethod, MethodSymbol implementingMethod, NamedTypeSymbol implementingType) 33public MethodSymbol ImplementingMethod
Symbols\Synthesized\SynthesizedGlobalMethodSymbol.cs (2)
334public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations 336get { return ImmutableArray<MethodSymbol>.Empty; }
Symbols\Synthesized\SynthesizedHotReloadExceptionConstructorSymbol.cs (3)
43var exceptionConstructor = (MethodSymbol?)factory.WellKnownMember(WellKnownMember.System_Exception__ctorString, isOptional: true); 55var delegateInvoke = (containingType.CreatedActionField.Type as NamedTypeSymbol)?.DelegateInvokeMethod;
Symbols\Synthesized\SynthesizedHotReloadExceptionSymbol.cs (4)
55public MethodSymbol Constructor 56=> (MethodSymbol)_members[0]; 156internal sealed override IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls() => [];
Symbols\Synthesized\SynthesizedImplementationMethod.cs (5)
17protected readonly MethodSymbol _interfaceMethod; 23private readonly ImmutableArray<MethodSymbol> _explicitInterfaceImplementations; 29MethodSymbol interfaceMethod, 42_explicitInterfaceImplementations = ImmutableArray.Create<MethodSymbol>(interfaceMethod); 133public sealed override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations
Symbols\Synthesized\SynthesizedInlineArrayTypeSymbol.cs (6)
28private readonly MethodSymbol _inlineArrayAttributeConstructor; 31internal SynthesizedInlineArrayTypeSymbol(SourceModuleSymbol containingModule, string name, int arrayLength, MethodSymbol inlineArrayAttributeConstructor) 199internal override IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls() => SpecializedCollections.EmptyEnumerable<(MethodSymbol Body, MethodSymbol Implemented)>();
Symbols\Synthesized\SynthesizedInstanceConstructor.cs (2)
263public sealed override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations 265get { return ImmutableArray<MethodSymbol>.Empty; }
Symbols\Synthesized\SynthesizedInteractiveInitializerMethod.cs (2)
64public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations 66get { return ImmutableArray<MethodSymbol>.Empty; }
Symbols\Synthesized\SynthesizedIntrinsicOperatorSymbol.cs (2)
265public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations 269return ImmutableArray<MethodSymbol>.Empty;
Symbols\Synthesized\SynthesizedLambdaCacheFieldSymbol.cs (2)
17private readonly MethodSymbol _topLevelMethod; 19public SynthesizedLambdaCacheFieldSymbol(NamedTypeSymbol containingType, TypeSymbol type, string name, MethodSymbol topLevelMethod, bool isReadOnly, bool isStatic)
Symbols\Synthesized\SynthesizedLocal.cs (2)
21private readonly MethodSymbol _containingMethodOpt; 35MethodSymbol containingMethodOpt,
Symbols\Synthesized\SynthesizedParameterlessThrowMethod.cs (2)
15private readonly MethodSymbol _exceptionConstructor; 17internal SynthesizedParameterlessThrowMethod(SynthesizedPrivateImplementationDetailsType privateImplType, TypeSymbol returnType, string synthesizedMethodName, MethodSymbol exceptionConstructor)
Symbols\Synthesized\SynthesizedParameterSymbol.cs (3)
232MethodSymbol method => method.UseUpdatedEscapeRules, 300internal static ImmutableArray<ParameterSymbol> DeriveParameters(MethodSymbol sourceMethod, MethodSymbol destinationMethod)
Symbols\Synthesized\SynthesizedPrivateImplementationDetailsType.cs (4)
197internal override IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls() 199return SpecializedCollections.EmptyEnumerable<(MethodSymbol Body, MethodSymbol Implemented)>();
Symbols\Synthesized\SynthesizedPropertySymbol.cs (3)
28public override MethodSymbol GetMethod { get; } 29public override MethodSymbol? SetMethod => null; 97public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations => [];
Symbols\Synthesized\SynthesizedSealedPropertyAccessor.cs (5)
26private readonly MethodSymbol _overriddenAccessor; 29public SynthesizedSealedPropertyAccessor(PropertySymbol property, MethodSymbol overriddenAccessor) 40internal MethodSymbol OverriddenAccessor 230public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations 234return ImmutableArray<MethodSymbol>.Empty;
Symbols\Synthesized\SynthesizedStaticConstructor.cs (2)
285public override ImmutableArray<MethodSymbol> ExplicitInterfaceImplementations 289return ImmutableArray<MethodSymbol>.Empty;
Symbols\Synthesized\SynthesizedTypeParameterSymbol.cs (2)
30Debug.Assert(this.TypeParameterKind == (ContainingSymbol is MethodSymbol ? TypeParameterKind.Method : 43public override TypeParameterKind TypeParameterKind => ContainingSymbol is MethodSymbol ? TypeParameterKind.Method : TypeParameterKind.Type;
Symbols\SynthesizedSimpleMethodTypeParameterSymbol.cs (2)
16private readonly MethodSymbol _container; 20public SynthesizedSimpleMethodTypeParameterSymbol(MethodSymbol container, int ordinal, string name)
Symbols\TypeMap.cs (4)
145internal TypeMap WithAlphaRename(MethodSymbol oldOwner, Symbol newOwner, bool propagateAttributes, out ImmutableArray<TypeParameterSymbol> newTypeParameters) 151internal static ImmutableArray<TypeParameterSymbol> ConcatMethodTypeParameters(MethodSymbol oldOwner, MethodSymbol stopAt) 178oldOwner = oldOwner.ContainingSymbol.OriginalDefinition as MethodSymbol;
Symbols\TypeParameterSymbol.cs (6)
124public MethodSymbol DeclaringMethod 128return this.ContainingSymbol as MethodSymbol; 718internal sealed override IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls() 720return SpecializedCollections.EmptyEnumerable<(MethodSymbol Body, MethodSymbol Implemented)>();
Symbols\TypeSymbol.cs (64)
87internal ImmutableDictionary<MethodSymbol, MethodSymbol>? synthesizedMethodImplMap; 869if (checkPendingExplicitImplementations && interfaceMember is MethodSymbol interfaceMethod && 873MethodSymbol bodyOfSynthesizedMethodImpl = currType.GetBodyOfSynthesizedInterfaceMethodImpl(interfaceMethod); 947if (implementingTypeIsFromSomeCompilation && implicitImpl is MethodSymbol implicitImplMethod && implicitImplMethod.IsOperator() != ((MethodSymbol)interfaceMember).IsOperator()) 959CheckForImplementationOfCorrespondingPropertyOrEvent((MethodSymbol)interfaceMember, implementingType, implementingTypeIsFromSomeCompilation, ref implicitImpl); 1066(MethodSymbol interfaceAccessor1, MethodSymbol interfaceAccessor2) = GetImplementableAccessors(interfaceMember); 1091static bool stopLookup(MethodSymbol interfaceAccessor, TypeSymbol implementingType) 1118(MethodSymbol interfaceAccessor1, MethodSymbol interfaceAccessor2) = GetImplementableAccessors(interfaceMember); 1174(MethodSymbol interfaceAccessor1, MethodSymbol interfaceAccessor2) = GetImplementableAccessors(interfaceMember); 1406private static (MethodSymbol interfaceAccessor1, MethodSymbol interfaceAccessor2) GetImplementableAccessors(Symbol interfaceMember) 1408MethodSymbol interfaceAccessor1; 1409MethodSymbol interfaceAccessor2; 1469(MethodSymbol interfaceAccessor1, MethodSymbol interfaceAccessor2) = GetImplementableAccessors(interfaceMember); 1504private static bool TryGetExplicitImplementationAssociatedPropertyOrEvent(bool checkPendingExplicitImplementations, MethodSymbol interfaceAccessor, TypeSymbol currType, ref CompoundUseSiteInfo<AssemblySymbol> useSiteInfo, out Symbol associated) 1515? ((MethodSymbol)implementation).AssociatedSymbol 1524MethodSymbol bodyOfSynthesizedMethodImpl = currType.GetBodyOfSynthesizedInterfaceMethodImpl(interfaceAccessor); 1548private static void CheckForImplementationOfCorrespondingPropertyOrEvent(MethodSymbol interfaceMethod, TypeSymbol implementingType, bool implementingTypeIsFromSomeCompilation, 1568MethodSymbol correspondingImplementingAccessor = null; 1609MethodSymbol interfaceAccessorWithImplementationName = new SignatureOnlyMethodSymbol( 1685var interfaceMethod = (MethodSymbol)interfaceMember; 1699var implicitImplMethod = (MethodSymbol)implicitImpl; 1814MethodSymbol implementedMethod, 1815MethodSymbol implementingMethod, 1941var implementingGetMethod = implementedProperty.GetMethod.IsImplementable() ? 1944var implementingSetMethod = implementedProperty.SetMethod.IsImplementable() ? 1968var implementingMethod = (MethodSymbol)implementingMember; 1969var implementedMethod = (MethodSymbol)interfaceMember; 2034var method = (MethodSymbol)interfaceMember; 2054hasRefReturnMismatch = ((MethodSymbol)closestMismatch).RefKind != interfaceMemberRefKind; 2073else if (interfaceMember is MethodSymbol interfaceMethod && 2074interfaceMethod.IsOperator() != ((MethodSymbol)closestMismatch).IsOperator()) 2087if (!(one is MethodSymbol oneMethod)) 2092if (!(other is MethodSymbol otherMethod)) 2117private static bool ReportAnyMismatchedConstraints(MethodSymbol interfaceMethod, TypeSymbol implementingType, MethodSymbol implicitImpl, BindingDiagnosticBag diagnostics) 2204if (interfaceMember is MethodSymbol { IsStatic: true } interfaceMethod) 2214(((MethodSymbol)member).MethodKind is MethodKind.UserDefinedOperator or MethodKind.Conversion) != isOperator.GetValueOrDefault()) 2318Debug.Assert(interfaceMember.Kind != SymbolKind.Method || (object)interfaceMember == ((MethodSymbol)interfaceMember).ConstructedFrom); 2329/// <see cref="MethodSymbol.ExplicitInterfaceImplementations"/> API, this method returns the "Body" part 2337protected MethodSymbol? GetBodyOfSynthesizedInterfaceMethodImpl(MethodSymbol interfaceMethod) 2350if (info.synthesizedMethodImplMap.TryGetValue(interfaceMethod, out MethodSymbol? result)) 2357ImmutableDictionary<MethodSymbol, MethodSymbol> makeSynthesizedMethodImplMap() 2359var map = ImmutableDictionary.CreateBuilder<MethodSymbol, MethodSymbol>(ExplicitInterfaceImplementationTargetMemberEqualityComparer.Instance); 2360foreach ((MethodSymbol body, MethodSymbol implemented) in this.SynthesizedInterfaceMethodImpls()) 2372/// <see cref="MethodSymbol.ExplicitInterfaceImplementations"/> API. The "Body" is the method that 2379internal abstract IEnumerable<(MethodSymbol Body, MethodSymbol Implemented)> SynthesizedInterfaceMethodImpls(); 2435overriddenMember = ((MethodSymbol)member).OverriddenMethod;
Symbols\TypeSymbolExtensions.cs (5)
616var invokeMethod = type.DelegateInvokeMethod(); 650public static MethodSymbol? DelegateInvokeMethod(this TypeSymbol type) 1001MethodSymbol currentPointer = type.Signature; 1291public static void FindTypeParameters(this MethodSymbol method, HashSet<TypeParameterSymbol> result) 1318(type, _, _) => type.TypeKind == TypeKind.TypeParameter && type.ContainingSymbol is MethodSymbol;
Symbols\VarianceSafety.cs (5)
52CheckMethodVarianceSafety((MethodSymbol)member, diagnostics); 140private static void CheckMethodVarianceSafety(this MethodSymbol method, BindingDiagnosticBag diagnostics) 151private static void CheckMethodVarianceSafety(this MethodSymbol method, LocationProvider<MethodSymbol> returnTypeLocationProvider, BindingDiagnosticBag diagnostics) 261private static void CheckTypeParametersVarianceSafety(ImmutableArray<TypeParameterSymbol> typeParameters, MethodSymbol context, BindingDiagnosticBag diagnostics)
Symbols\Wrapped\WrappedMethodSymbol.cs (1)
29public abstract MethodSymbol UnderlyingMethod