Binder\Binder.ValueChecks.cs (17)
68internal static MethodInfo Create(PropertySymbol property)
76internal static MethodInfo Create(PropertySymbol property, AccessorKind accessorKind) =>
1685var propertySymbol = GetPropertySymbol(expr, out receiver, out propertySyntax);
2512case PropertySymbol property:
3465var indexerSymbol = indexerAccess.Indexer;
3487var indexerSymbol = indexerAccess.Indexer;
3764var indexerSymbol = indexerAccess.Indexer;
3795var indexerSymbol = indexerAccess.Indexer;
3906var propertySymbol = propertyAccess.PropertySymbol;
4166var indexerSymbol = indexerAccess.Indexer;
4188var indexerSymbol = indexerAccess.Indexer;
4605PropertySymbol { IsIndexer: true } indexer => getIndexerEscape(indexer, left, rightEscape),
4606PropertySymbol property => getPropertyEscape(property, rightEscape),
4618PropertySymbol indexer,
4671PropertySymbol property,
4885var indexerSymbol = indexerAccess.Indexer;
4911var indexerSymbol = indexerAccess.Indexer;
Binder\Binder_Expressions.cs (33)
2168return BindPropertyAccess(node, receiver, (PropertySymbol)symbol, diagnostics, resultKind, hasErrors: isError);
5989PropertySymbol propertySymbol,
8178resultType = ((PropertySymbol)symbolOpt).Type;
8311result = BindPropertyAccess(node, left, (PropertySymbol)symbol, diagnostics, lookupResult.Kind, hasErrors: wasError);
8676PropertySymbol propertySymbol,
8955foreach (PropertySymbol property in members)
9291return BindDynamicIndexer(node, expr, arguments, ImmutableArray<PropertySymbol>.Empty, diagnostics);
9615ArrayBuilder<PropertySymbol> indexerGroup = ArrayBuilder<PropertySymbol>.GetInstance();
9619indexerGroup.Add((PropertySymbol)symbol);
9630private static readonly Func<PropertySymbol, bool> s_isIndexedPropertyWithNonOptionalArguments = property =>
9681private BoundExpression BindIndexedPropertyAccess(SyntaxNode syntax, BoundExpression receiver, ImmutableArray<PropertySymbol> propertyGroup, AnalyzedArguments arguments, BindingDiagnosticBag diagnostics)
9686var properties = ArrayBuilder<PropertySymbol>.GetInstance();
9698ImmutableArray<PropertySymbol> applicableProperties,
9741ArrayBuilder<PropertySymbol> propertyGroup,
9746OverloadResolutionResult<PropertySymbol> overloadResolutionResult = OverloadResolutionResult<PropertySymbol>.GetInstance();
9781ArrayBuilder<PropertySymbol> propertyGroup,
9783OverloadResolutionResult<PropertySymbol> overloadResolutionResult,
9794ImmutableArray<PropertySymbol> candidates = propertyGroup.ToImmutable();
9808var candidate = candidates[0];
9829PropertySymbol property = (candidates.Length == 1) ? candidates[0] : CreateErrorPropertySymbol(candidates);
9842MemberResolutionResult<PropertySymbol> resolutionResult = overloadResolutionResult.ValidResult;
9843PropertySymbol property = resolutionResult.Member;
9853this.CheckAndCoerceArguments<PropertySymbol>(syntax, resolutionResult, analyzedArguments, diagnostics, receiver, invokedAsExtensionMethod: false, out argsToParams);
10036candidate is PropertySymbol property &&
10046var properties = ArrayBuilder<PropertySymbol>.GetInstance();
10150if (TryLookupLengthOrCount(syntax, receiverPlaceholder.Type, lookupResult, out var lengthOrCountProperty, diagnostics))
10170[NotNullWhen(true)] out PropertySymbol? lengthOrCountProperty,
10182bool tryLookupLengthOrCount(SyntaxNode syntax, string propertyName, [NotNullWhen(true)] out PropertySymbol? valid, BindingDiagnosticBag diagnostics)
10198lookupResult.Symbols[0] is PropertySymbol property &&
10217private ErrorPropertySymbol CreateErrorPropertySymbol(ImmutableArray<PropertySymbol> propertyGroup)
10220var candidate = propertyGroup[0];
FlowAnalysis\NullableWalker.cs (23)
650predicate: member => member is PropertySymbol { IsRequired: true },
653var property = (PropertySymbol)member;
728symbol = (Symbol?)(f.AssociatedSymbol as PropertySymbol) ?? f;
739case PropertySymbol p when forcePropertyAnalysis:
810case PropertySymbol { IsRequired: true }:
812case PropertySymbol:
959var property = (PropertySymbol)requiredMember;
1978var propSymbol = propAccess.PropertySymbol;
4123((PropertySymbol?)symbol)?.Parameters ?? default, objectInitializer.ArgsToParamsOpt,
4182argumentsCompletion?.Invoke(argumentResults, ((PropertySymbol?)symbol)?.Parameters ?? default, null);
4505var property = AnonymousTypeManager.GetAnonymousTypeProperty(anonymousType, i);
4526static BoundAnonymousPropertyDeclaration? getDeclaration(BoundAnonymousObjectCreationExpression node, PropertySymbol currentProperty, ref int currentDeclarationIndex)
5479if ((member is PropertySymbol { IsIndexedProperty: false } || member.Kind == SymbolKind.Field) &&
6731PropertySymbol? property,
9988private bool IsPropertyOutputMoreStrictThanInput(PropertySymbol property)
10009var property = left switch
10062var annotations = memberSymbol switch { PropertySymbol prop => prop.GetFlowAnalysisAnnotations(), FieldSymbol field => GetFieldAnnotations(field), _ => FlowAnalysisAnnotations.None };
10666var property = node.PropertySymbol;
10693var indexer = node.Indexer;
10697indexer = (PropertySymbol)AsMemberOfType(receiverType, indexer);
10807var getMethod = ((PropertySymbol)member.OriginalDefinition).GetMethod;
Generated\BoundNodes.xml.Generated.cs (41)
339public BoundPropertyEqualsValue(SyntaxNode syntax, PropertySymbol property, ImmutableArray<LocalSymbol> locals, BoundExpression value, bool hasErrors = false)
350public PropertySymbol Property { get; }
355public BoundPropertyEqualsValue Update(PropertySymbol property, ImmutableArray<LocalSymbol> locals, BoundExpression value)
2141public BoundAwaitableInfo(SyntaxNode syntax, BoundAwaitableValuePlaceholder? awaitableInstancePlaceholder, bool isDynamic, BoundExpression? getAwaiter, PropertySymbol? isCompleted, MethodSymbol? getResult, bool hasErrors = false)
2154public PropertySymbol? IsCompleted { get; }
2160public BoundAwaitableInfo Update(BoundAwaitableValuePlaceholder? awaitableInstancePlaceholder, bool isDynamic, BoundExpression? getAwaiter, PropertySymbol? isCompleted, MethodSymbol? getResult)
5472public BoundDagPropertyEvaluation(SyntaxNode syntax, PropertySymbol property, bool isLengthOrCount, BoundDagTemp input, bool hasErrors = false)
5483public PropertySymbol Property { get; }
5489public BoundDagPropertyEvaluation Update(PropertySymbol property, bool isLengthOrCount, BoundDagTemp input)
5503public BoundDagIndexEvaluation(SyntaxNode syntax, PropertySymbol property, int index, BoundDagTemp input, bool hasErrors = false)
5514public PropertySymbol Property { get; }
5520public BoundDagIndexEvaluation Update(PropertySymbol property, int index, BoundDagTemp input)
6116public BoundPropertyGroup(SyntaxNode syntax, ImmutableArray<PropertySymbol> properties, BoundExpression? receiverOpt, LookupResultKind resultKind, bool hasErrors = false)
6125public ImmutableArray<PropertySymbol> Properties { get; }
6130public BoundPropertyGroup Update(ImmutableArray<PropertySymbol> properties, BoundExpression? receiverOpt, LookupResultKind resultKind)
7014public BoundAnonymousPropertyDeclaration(SyntaxNode syntax, PropertySymbol property, TypeSymbol type, bool hasErrors)
7024public BoundAnonymousPropertyDeclaration(SyntaxNode syntax, PropertySymbol property, TypeSymbol type)
7035public PropertySymbol Property { get; }
7040public BoundAnonymousPropertyDeclaration Update(PropertySymbol property, TypeSymbol type)
7338public BoundPropertyAccess(SyntaxNode syntax, BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, PropertySymbol propertySymbol, AccessorKind autoPropertyAccessorKind, LookupResultKind resultKind, TypeSymbol type, bool hasErrors = false)
7355public PropertySymbol PropertySymbol { get; }
7362public BoundPropertyAccess Update(BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, PropertySymbol propertySymbol, AccessorKind autoPropertyAccessorKind, LookupResultKind resultKind, TypeSymbol type)
7412public 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)
7436public PropertySymbol Indexer { get; }
7444public ImmutableArray<PropertySymbol> OriginalIndexersOpt { get; }
7449public 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)
7553public BoundDynamicIndexerAccess(SyntaxNode syntax, BoundExpression receiver, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, ImmutableArray<PropertySymbol> applicableIndexers, TypeSymbol type, bool hasErrors = false)
7574public ImmutableArray<PropertySymbol> ApplicableIndexers { get; }
7579public BoundDynamicIndexerAccess Update(BoundExpression receiver, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, ImmutableArray<PropertySymbol> applicableIndexers, TypeSymbol type)
12239PropertySymbol property = GetUpdatedSymbol(node, node.Property);
12954PropertySymbol? isCompleted = GetUpdatedSymbol(node, node.IsCompleted);
13690PropertySymbol property = GetUpdatedSymbol(node, node.Property);
13697PropertySymbol property = GetUpdatedSymbol(node, node.Property);
13913ImmutableArray<PropertySymbol> properties = GetUpdatedArray(node, node.Properties);
14290PropertySymbol property = GetUpdatedSymbol(node, node.Property);
14450PropertySymbol propertySymbol = GetUpdatedSymbol(node, node.PropertySymbol);
14486PropertySymbol indexer = GetUpdatedSymbol(node, node.Indexer);
14487ImmutableArray<PropertySymbol> originalIndexersOpt = GetUpdatedArray(node, node.OriginalIndexersOpt);
14524ImmutableArray<PropertySymbol> applicableIndexers = GetUpdatedArray(node, node.ApplicableIndexers);
Symbols\Compilation_WellKnownMembers.cs (8)
245internal static Symbol? GetRuntimeMember(NamedTypeSymbol declaringType, in MemberDescriptor descriptor, SignatureComparer<MethodSymbol, FieldSymbol, PropertySymbol, TypeSymbol, ParameterSymbol> comparer, AssemblySymbol? accessWithinOpt)
251internal static Symbol? GetRuntimeMember(ImmutableArray<Symbol> members, in MemberDescriptor descriptor, SignatureComparer<MethodSymbol, FieldSymbol, PropertySymbol, TypeSymbol, ParameterSymbol> comparer, AssemblySymbol? accessWithinOpt)
330PropertySymbol property = (PropertySymbol)member;
1061internal class SpecialMembersSignatureComparer : SignatureComparer<MethodSymbol, FieldSymbol, PropertySymbol, TypeSymbol, ParameterSymbol>
1090protected override TypeSymbol GetPropertyType(PropertySymbol property)
1136protected override ImmutableArray<ParameterSymbol> GetParameters(PropertySymbol property)
1180protected override bool IsByRefProperty(PropertySymbol property)
Symbols\Source\SourceMemberContainerSymbol.cs (24)
2188var indexersBySignature = new Dictionary<PropertySymbol, PropertySymbol>(MemberSignatureComparer.DuplicateSourceComparer);
2200PropertySymbol indexer = (PropertySymbol)symbol;
2227PropertySymbol indexer,
2230Dictionary<PropertySymbol, PropertySymbol> indexersBySignature,
2264if (indexersBySignature.TryGetValue(indexer, out var prevIndexerBySignature))
2324var propertySymbol = (PropertySymbol)symbol;
3833PropertySymbol propertySymbol,
3915private static Location GetAccessorOrPropertyLocation(PropertySymbol propertySymbol, bool getNotSet)
3934private static bool ParametersMatchPropertyAccessor(PropertySymbol propertySymbol, bool getNotSet, ImmutableArray<ParameterSymbol> methodParams)
4245PropertySymbol? equalityContract = isRecordClass ? addEqualityContract() : null;
4271Debug.Assert(isRecordClass || !members.Any(m => m is PropertySymbol { GetMethod.IsEffectivelyReadOnly: false }));
4282Debug.Assert(positionalMembers.All(p => p is PropertySymbol or FieldSymbol));
4530ImmutableArray<PropertySymbol>.Empty);
4554else if (existingMember is PropertySymbol { IsStatic: false, GetMethod: { } } prop
4612MethodSymbol addGetHashCode(PropertySymbol? equalityContract)
4646PropertySymbol addEqualityContract()
4656ImmutableArray<PropertySymbol>.Empty);
4658PropertySymbol equalityContract;
4668equalityContract = (PropertySymbol)existingEqualityContractProperty;
4705MethodSymbol addThisEquals(PropertySymbol? equalityContract)
Symbols\Synthesized\ReadOnlyListType\SynthesizedReadOnlyListTypeSymbol.cs (16)
326(PropertySymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_ICollection__Count)!,
331(PropertySymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_ICollection__IsSynchronized)!,
336(PropertySymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_ICollection__SyncRoot)!,
346(PropertySymbol)((MethodSymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_IList__get_Item)!).AssociatedSymbol,
352(PropertySymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_IList__IsFixedSize)!,
357(PropertySymbol)compilation.GetWellKnownTypeMember(WellKnownMember.System_Collections_IList__IsReadOnly)!,
404((PropertySymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_Generic_IReadOnlyCollection_T__Count)!).AsMember(iReadOnlyCollectionT),
409((PropertySymbol)((MethodSymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_Generic_IReadOnlyList_T__get_Item)!).AssociatedSymbol).AsMember(iReadOnlyListT),
415((PropertySymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_Generic_ICollection_T__Count)!).AsMember(iCollectionT),
420((PropertySymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_Generic_ICollection_T__IsReadOnly)!).AsMember(iCollectionT),
450((PropertySymbol)((MethodSymbol)compilation.GetSpecialTypeMember(SpecialMember.System_Collections_Generic_IList_T__get_Item)!).AssociatedSymbol).AsMember(iListT),
517var listMember = (PropertySymbol)containingType.GetFieldTypeMember(WellKnownMember.System_Collections_Generic_List_T__Count);
675var listMember = (PropertySymbol)((MethodSymbol)containingType.GetFieldTypeMember(WellKnownMember.System_Collections_Generic_List_T__get_Item)).AssociatedSymbol;
728static void addProperty(ArrayBuilder<Symbol> builder, PropertySymbol property)