Binder\Binder.ValueChecks.cs (17)
69internal static MethodInfo Create(PropertySymbol property)
77internal static MethodInfo Create(PropertySymbol property, AccessorKind accessorKind) =>
1942var propertySymbol = GetPropertySymbol(expr, out receiver, out propertySyntax);
2833case PropertySymbol property:
3808var indexerSymbol = indexerAccess.Indexer;
3824var indexerSymbol = indexerAccess.Indexer;
4088var indexerSymbol = indexerAccess.Indexer;
4113var indexerSymbol = indexerAccess.Indexer;
4205var propertySymbol = propertyAccess.PropertySymbol;
4459var indexerSymbol = indexerAccess.Indexer;
4475var indexerSymbol = indexerAccess.Indexer;
4874PropertySymbol { IsIndexer: true } indexer => getIndexerEscape(indexer, left, rightEscape),
4875PropertySymbol property => getPropertyEscape(property, rightEscape),
4892PropertySymbol indexer,
4949PropertySymbol property,
5156var indexerSymbol = indexerAccess.Indexer;
5176var indexerSymbol = indexerAccess.Indexer;
Binder\Binder_Expressions.cs (44)
1541ContainingMember() is MethodSymbol { MethodKind: MethodKind.PropertyGet or MethodKind.PropertySet, AssociatedSymbol: PropertySymbol { IsIndexer: false } })
2227return BindPropertyAccess(node, receiver, (PropertySymbol)symbol, diagnostics, resultKind, hasErrors: isError);
6069PropertySymbol propertySymbol,
8068case PropertySymbol propertySymbol:
8358resultType = ((PropertySymbol)symbolOpt).Type;
8512result = BindPropertyAccess(node, left, (PropertySymbol)symbol, diagnostics, lookupResult.Kind, hasErrors: wasError);
8671OverloadResolutionResult<PropertySymbol>? propertyResult = arity != 0 || acceptOnlyMethods ? null : resolveProperties(left, lookupResult, binder, ref actualReceiverArguments, ref useSiteInfo);
8821static OverloadResolutionResult<PropertySymbol>? resolveProperties(
8828ArrayBuilder<PropertySymbol>? properties = null;
8831if (member is PropertySymbol property)
8833properties ??= ArrayBuilder<PropertySymbol>.GetInstance();
8849OverloadResolutionResult<PropertySymbol> overloadResolutionResult = OverloadResolutionResult<PropertySymbol>.GetInstance();
8860OverloadResolutionResult<PropertySymbol> propertyResult,
8880PropertySymbol representativeProperty = propertyResult.PickRepresentativeMember();
9071PropertySymbol propertySymbol,
9350foreach (PropertySymbol property in members)
9686return BindDynamicIndexer(node, expr, arguments, ImmutableArray<PropertySymbol>.Empty, diagnostics);
10010ArrayBuilder<PropertySymbol> indexerGroup = ArrayBuilder<PropertySymbol>.GetInstance();
10014indexerGroup.Add((PropertySymbol)symbol);
10025private static readonly Func<PropertySymbol, bool> s_isIndexedPropertyWithNonOptionalArguments = property =>
10076private BoundExpression BindIndexedPropertyAccess(SyntaxNode syntax, BoundExpression receiver, ImmutableArray<PropertySymbol> propertyGroup, AnalyzedArguments arguments, BindingDiagnosticBag diagnostics)
10081var properties = ArrayBuilder<PropertySymbol>.GetInstance();
10093ImmutableArray<PropertySymbol> applicableProperties,
10136ArrayBuilder<PropertySymbol> propertyGroup,
10141OverloadResolutionResult<PropertySymbol> overloadResolutionResult = OverloadResolutionResult<PropertySymbol>.GetInstance();
10176ArrayBuilder<PropertySymbol> propertyGroup,
10178OverloadResolutionResult<PropertySymbol> overloadResolutionResult,
10189ImmutableArray<PropertySymbol> candidates = propertyGroup.ToImmutable();
10203var candidate = candidates[0];
10224PropertySymbol property = (candidates.Length == 1) ? candidates[0] : CreateErrorPropertySymbol(candidates);
10237MemberResolutionResult<PropertySymbol> resolutionResult = overloadResolutionResult.ValidResult;
10238PropertySymbol property = resolutionResult.Member;
10248this.CheckAndCoerceArguments<PropertySymbol>(syntax, resolutionResult, analyzedArguments, diagnostics, receiver, invokedAsExtensionMethod: false, out argsToParams);
10431candidate is PropertySymbol property &&
10441var properties = ArrayBuilder<PropertySymbol>.GetInstance();
10548if (TryLookupLengthOrCount(syntax, receiverPlaceholder.Type, lookupResult, out var lengthOrCountProperty, diagnostics))
10568[NotNullWhen(true)] out PropertySymbol? lengthOrCountProperty,
10580bool tryLookupLengthOrCount(SyntaxNode syntax, string propertyName, [NotNullWhen(true)] out PropertySymbol? valid, BindingDiagnosticBag diagnostics)
10596lookupResult.Symbols[0] is PropertySymbol property &&
10615private ErrorPropertySymbol CreateErrorPropertySymbol(ImmutableArray<PropertySymbol> propertyGroup)
10618var candidate = propertyGroup[0];
FlowAnalysis\NullableWalker.cs (34)
687predicate: member => member is PropertySymbol { IsRequired: true },
690var property = (PropertySymbol)member;
765symbol = (Symbol?)(f.AssociatedSymbol as PropertySymbol) ?? f;
776case PropertySymbol p when forcePropertyAnalysis:
847case PropertySymbol { IsRequired: true }:
849case PropertySymbol:
962var prop = symbolToInitialize as PropertySymbol ?? (symbolToInitialize as FieldSymbol)?.AssociatedSymbol as PropertySymbol;
999if (requiredMember is PropertySymbol { IsAbstract: true } abstractProperty)
1002&& isFilterableOverrideOfAbstractProperty((PropertySymbol)overridingMember))
1024var property = (PropertySymbol)requiredMember;
1049static bool isFilterableOverrideOfAbstractProperty(PropertySymbol property)
2100var propSymbol = propAccess.PropertySymbol;
2810if (method is SourcePropertyAccessorSymbol { AssociatedSymbol: PropertySymbol prop } && (object)backingField.AssociatedSymbol == prop)
4358((PropertySymbol?)symbol)?.Parameters ?? default, objectInitializer.ArgsToParamsOpt,
4417argumentsCompletion?.Invoke(argumentResults, ((PropertySymbol?)symbol)?.Parameters ?? default, null);
4443if (symbol is not PropertySymbol { IsStatic: false } property
4779var property = AnonymousTypeManager.GetAnonymousTypeProperty(anonymousType, i);
4800static BoundAnonymousPropertyDeclaration? getDeclaration(BoundAnonymousObjectCreationExpression node, PropertySymbol currentProperty, ref int currentDeclarationIndex)
5811if ((member is PropertySymbol { IsIndexedProperty: false } || member.Kind == SymbolKind.Field) &&
7251PropertySymbol? property,
7256return VisitArguments<PropertySymbol>(node, arguments, refKindsOpt, parametersOpt: property is null ? default : property.Parameters, argsToParamsOpt, defaultArguments, expanded, invokedAsExtensionMethod: false).results;
10659private bool IsPropertyOutputMoreStrictThanInput(PropertySymbol property)
10680var property = left switch
10733var annotations = memberSymbol switch { PropertySymbol prop => prop.GetFlowAnalysisAnnotations(), FieldSymbol field => GetFieldAnnotations(field), _ => FlowAnalysisAnnotations.None };
11471private (PropertySymbol updatedProperty, bool returnNotNull) ReInferAndVisitExtensionPropertyAccess(BoundNode node, PropertySymbol property, BoundExpression receiver)
11492var property = node.PropertySymbol;
11536var indexer = node.Indexer;
11540indexer = (PropertySymbol)AsMemberOfType(receiverType, indexer);
11651var getMethod = ((PropertySymbol)member.OriginalDefinition).GetMethod;
Generated\BoundNodes.xml.Generated.cs (54)
320public BoundPropertyEqualsValue(SyntaxNode syntax, PropertySymbol property, ImmutableArray<LocalSymbol> locals, BoundExpression value, bool hasErrors = false)
331public PropertySymbol Property { get; }
336public BoundPropertyEqualsValue Update(PropertySymbol property, ImmutableArray<LocalSymbol> locals, BoundExpression value)
2130public BoundAwaitableInfo(SyntaxNode syntax, BoundAwaitableValuePlaceholder? awaitableInstancePlaceholder, bool isDynamic, BoundExpression? getAwaiter, PropertySymbol? isCompleted, MethodSymbol? getResult, BoundCall? runtimeAsyncAwaitCall, BoundAwaitableValuePlaceholder? runtimeAsyncAwaitCallPlaceholder, bool hasErrors = false)
2149public PropertySymbol? IsCompleted { get; }
2157public BoundAwaitableInfo Update(BoundAwaitableValuePlaceholder? awaitableInstancePlaceholder, bool isDynamic, BoundExpression? getAwaiter, PropertySymbol? isCompleted, MethodSymbol? getResult, BoundCall? runtimeAsyncAwaitCall, BoundAwaitableValuePlaceholder? runtimeAsyncAwaitCallPlaceholder)
5473public BoundDagPropertyEvaluation(SyntaxNode syntax, PropertySymbol property, bool isLengthOrCount, BoundDagTemp input, bool hasErrors = false)
5484public PropertySymbol Property { get; }
5490public BoundDagPropertyEvaluation Update(PropertySymbol property, bool isLengthOrCount, BoundDagTemp input)
5504public BoundDagIndexEvaluation(SyntaxNode syntax, PropertySymbol property, int index, BoundDagTemp input, bool hasErrors = false)
5515public PropertySymbol Property { get; }
5521public BoundDagIndexEvaluation Update(PropertySymbol property, int index, BoundDagTemp input)
6117public BoundPropertyGroup(SyntaxNode syntax, ImmutableArray<PropertySymbol> properties, BoundExpression? receiverOpt, LookupResultKind resultKind, bool hasErrors = false)
6126public ImmutableArray<PropertySymbol> Properties { get; }
6131public BoundPropertyGroup Update(ImmutableArray<PropertySymbol> properties, BoundExpression? receiverOpt, LookupResultKind resultKind)
7019public BoundAnonymousPropertyDeclaration(SyntaxNode syntax, PropertySymbol property, TypeSymbol type, bool hasErrors)
7029public BoundAnonymousPropertyDeclaration(SyntaxNode syntax, PropertySymbol property, TypeSymbol type)
7040public PropertySymbol Property { get; }
7045public BoundAnonymousPropertyDeclaration Update(PropertySymbol property, TypeSymbol type)
7343public BoundPropertyAccess(SyntaxNode syntax, BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, PropertySymbol propertySymbol, AccessorKind autoPropertyAccessorKind, LookupResultKind resultKind, TypeSymbol type, bool hasErrors = false)
7360public PropertySymbol PropertySymbol { get; }
7367public BoundPropertyAccess Update(BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, PropertySymbol propertySymbol, AccessorKind autoPropertyAccessorKind, LookupResultKind resultKind, TypeSymbol type)
7417public BoundIndexerAccess(SyntaxNode syntax, BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, PropertySymbol indexer, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, AccessorKind accessorKind, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, ImmutableArray<PropertySymbol> originalIndexersOpt, TypeSymbol type, bool hasErrors = false)
7441public PropertySymbol Indexer { get; }
7449public ImmutableArray<PropertySymbol> OriginalIndexersOpt { get; }
7454public BoundIndexerAccess Update(BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, PropertySymbol indexer, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, AccessorKind accessorKind, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, ImmutableArray<PropertySymbol> originalIndexersOpt, TypeSymbol type)
7558public BoundDynamicIndexerAccess(SyntaxNode syntax, BoundExpression receiver, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, ImmutableArray<PropertySymbol> applicableIndexers, TypeSymbol type, bool hasErrors = false)
7579public ImmutableArray<PropertySymbol> ApplicableIndexers { get; }
7584public BoundDynamicIndexerAccess Update(BoundExpression receiver, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, ImmutableArray<PropertySymbol> applicableIndexers, TypeSymbol type)
10851PropertySymbol property = this.VisitPropertySymbol(node.Property);
11186PropertySymbol? isCompleted = this.VisitPropertySymbol(node.IsCompleted);
11761PropertySymbol property = this.VisitPropertySymbol(node.Property);
11767PropertySymbol property = this.VisitPropertySymbol(node.Property);
11886ImmutableArray<PropertySymbol> properties = this.VisitSymbols<PropertySymbol>(node.Properties);
12050PropertySymbol property = this.VisitPropertySymbol(node.Property);
12111PropertySymbol propertySymbol = this.VisitPropertySymbol(node.PropertySymbol);
12125PropertySymbol indexer = this.VisitPropertySymbol(node.Indexer);
12126ImmutableArray<PropertySymbol> originalIndexersOpt = this.VisitSymbols<PropertySymbol>(node.OriginalIndexersOpt);
12152ImmutableArray<PropertySymbol> applicableIndexers = this.VisitSymbols<PropertySymbol>(node.ApplicableIndexers);
12431PropertySymbol property = GetUpdatedSymbol(node, node.Property);
13123PropertySymbol? isCompleted = GetUpdatedSymbol(node, node.IsCompleted);
13867PropertySymbol property = GetUpdatedSymbol(node, node.Property);
13874PropertySymbol property = GetUpdatedSymbol(node, node.Property);
14090ImmutableArray<PropertySymbol> properties = GetUpdatedArray(node, node.Properties);
14467PropertySymbol property = GetUpdatedSymbol(node, node.Property);
14627PropertySymbol propertySymbol = GetUpdatedSymbol(node, node.PropertySymbol);
14663PropertySymbol indexer = GetUpdatedSymbol(node, node.Indexer);
14664ImmutableArray<PropertySymbol> originalIndexersOpt = GetUpdatedArray(node, node.OriginalIndexersOpt);
14701ImmutableArray<PropertySymbol> applicableIndexers = GetUpdatedArray(node, node.ApplicableIndexers);
Symbols\Compilation_WellKnownMembers.cs (8)
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)
336PropertySymbol property = (PropertySymbol)member;
1079internal class SpecialMembersSignatureComparer : SignatureComparer<MethodSymbol, FieldSymbol, PropertySymbol, TypeSymbol, ParameterSymbol>
1108protected override TypeSymbol GetPropertyType(PropertySymbol property)
1154protected override ImmutableArray<ParameterSymbol> GetParameters(PropertySymbol property)
1198protected override bool IsByRefProperty(PropertySymbol property)
Symbols\Source\SourceMemberContainerSymbol.cs (26)
1749else if (member is FieldSymbol { AssociatedSymbol: SourcePropertySymbolBase { PartialDefinitionPart: PropertySymbol definition } implementation } &&
2272var indexersBySignature = new Dictionary<PropertySymbol, PropertySymbol>(MemberSignatureComparer.DuplicateSourceComparer);
2284PropertySymbol indexer = (PropertySymbol)symbol;
2334PropertySymbol indexer,
2337Dictionary<PropertySymbol, PropertySymbol> indexersBySignature,
2371if (indexersBySignature.TryGetValue(indexer, out var prevIndexerBySignature))
2582var propertySymbol = (PropertySymbol)symbol;
4351PropertySymbol propertySymbol,
4436private static Location GetAccessorOrPropertyLocation(PropertySymbol propertySymbol, bool getNotSet)
4455private static bool ParametersMatchPropertyAccessor(PropertySymbol propertySymbol, bool getNotSet, ImmutableArray<ParameterSymbol> methodParams)
4658if (!((PropertySymbol)member).IsIndexer)
4834PropertySymbol? equalityContract = isRecordClass ? addEqualityContract() : null;
4860Debug.Assert(isRecordClass || !members.Any(m => m is PropertySymbol { GetMethod.IsEffectivelyReadOnly: false }));
4871Debug.Assert(positionalMembers.All(p => p is PropertySymbol or FieldSymbol));
5123ImmutableArray<PropertySymbol>.Empty);
5147else if (existingMember is PropertySymbol { IsStatic: false, GetMethod: { } } prop
5205MethodSymbol addGetHashCode(PropertySymbol? equalityContract)
5239PropertySymbol addEqualityContract()
5249ImmutableArray<PropertySymbol>.Empty);
5251PropertySymbol equalityContract;
5261equalityContract = (PropertySymbol)existingEqualityContractProperty;
5298MethodSymbol addThisEquals(PropertySymbol? equalityContract)
Symbols\Synthesized\ReadOnlyListType\SynthesizedReadOnlyListTypeSymbol.cs (16)
327(PropertySymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_ICollection__Count)!,
332(PropertySymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_ICollection__IsSynchronized)!,
337(PropertySymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_ICollection__SyncRoot)!,
347(PropertySymbol)((MethodSymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_IList__get_Item)!).AssociatedSymbol,
353(PropertySymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_IList__IsFixedSize)!,
358(PropertySymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_IList__IsReadOnly)!,
405((PropertySymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_Generic_IReadOnlyCollection_T__Count)!).AsMember(iReadOnlyCollectionT),
410((PropertySymbol)((MethodSymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_Generic_IReadOnlyList_T__get_Item)!).AssociatedSymbol).AsMember(iReadOnlyListT),
416((PropertySymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_Generic_ICollection_T__Count)!).AsMember(iCollectionT),
421((PropertySymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_Generic_ICollection_T__IsReadOnly)!).AsMember(iCollectionT),
451((PropertySymbol)((MethodSymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_Generic_IList_T__get_Item)!).AssociatedSymbol).AsMember(iListT),
518var listMember = (PropertySymbol)containingType.GetFieldTypeMember(WellKnownMember.System_Collections_Generic_List_T__Count);
676var listMember = (PropertySymbol)((MethodSymbol)containingType.GetFieldTypeMember(WellKnownMember.System_Collections_Generic_List_T__get_Item)).AssociatedSymbol;
729static void addProperty(ArrayBuilder<Symbol> builder, PropertySymbol property)