Binder\Binder_Expressions.cs (31)
1979return BindPropertyAccess(node, receiver, (PropertySymbol)symbol, diagnostics, resultKind, hasErrors: isError);
5118PropertySymbol propertySymbol,
7108resultType = ((PropertySymbol)symbolOpt).Type;
7241result = BindPropertyAccess(node, left, (PropertySymbol)symbol, diagnostics, lookupResult.Kind, hasErrors: wasError);
7591PropertySymbol propertySymbol,
7853foreach (PropertySymbol property in members)
7950return BindDynamicIndexer(node, expr, arguments, ImmutableArray<PropertySymbol>.Empty, diagnostics);
8274ArrayBuilder<PropertySymbol> indexerGroup = ArrayBuilder<PropertySymbol>.GetInstance();
8278indexerGroup.Add((PropertySymbol)symbol);
8289private static readonly Func<PropertySymbol, bool> s_isIndexedPropertyWithNonOptionalArguments = property =>
8340private BoundExpression BindIndexedPropertyAccess(SyntaxNode syntax, BoundExpression receiver, ImmutableArray<PropertySymbol> propertyGroup, AnalyzedArguments arguments, BindingDiagnosticBag diagnostics)
8345var properties = ArrayBuilder<PropertySymbol>.GetInstance();
8357ImmutableArray<PropertySymbol> applicableProperties,
8400ArrayBuilder<PropertySymbol> propertyGroup,
8405OverloadResolutionResult<PropertySymbol> overloadResolutionResult = OverloadResolutionResult<PropertySymbol>.GetInstance();
8430ImmutableArray<PropertySymbol> candidates = propertyGroup.ToImmutable();
8444var candidate = candidates[0];
8465PropertySymbol property = (candidates.Length == 1) ? candidates[0] : CreateErrorPropertySymbol(candidates);
8478MemberResolutionResult<PropertySymbol> resolutionResult = overloadResolutionResult.ValidResult;
8479PropertySymbol property = resolutionResult.Member;
8491this.CoerceArguments<PropertySymbol>(resolutionResult, analyzedArguments.Arguments, diagnostics, receiver);
8672candidate is PropertySymbol property &&
8682var properties = ArrayBuilder<PropertySymbol>.GetInstance();
8781if (TryLookupLengthOrCount(syntax, receiverPlaceholder.Type, lookupResult, out var lengthOrCountProperty, diagnostics))
8801[NotNullWhen(true)] out PropertySymbol? lengthOrCountProperty,
8813bool tryLookupLengthOrCount(SyntaxNode syntax, string propertyName, [NotNullWhen(true)] out PropertySymbol? valid, BindingDiagnosticBag diagnostics)
8829lookupResult.Symbols[0] is PropertySymbol property &&
8848private ErrorPropertySymbol CreateErrorPropertySymbol(ImmutableArray<PropertySymbol> propertyGroup)
8851var candidate = propertyGroup[0];
FlowAnalysis\NullableWalker.cs (26)
618predicate: member => member is PropertySymbol { IsRequired: true },
621var property = (PropertySymbol)member;
696symbol = (Symbol?)(f.AssociatedSymbol as PropertySymbol) ?? f;
707case PropertySymbol p when forcePropertyAnalysis:
881case PropertySymbol { IsRequired: true }:
883case PropertySymbol:
888case FieldSymbol { AssociatedSymbol: PropertySymbol prop }:
1027var property = (PropertySymbol)requiredMember;
1930var propSymbol = propAccess.PropertySymbol;
3723((PropertySymbol?)symbol)?.Parameters ?? default, objectInitializer.ArgsToParamsOpt,
3782argumentsCompletion?.Invoke(argumentResults, ((PropertySymbol?)symbol)?.Parameters ?? default, null);
4098var property = AnonymousTypeManager.GetAnonymousTypeProperty(anonymousType, i);
4119static BoundAnonymousPropertyDeclaration? getDeclaration(BoundAnonymousObjectCreationExpression node, PropertySymbol currentProperty, ref int currentDeclarationIndex)
5033if ((member is PropertySymbol { IsIndexedProperty: false } || member.Kind == SymbolKind.Field) &&
6126PropertySymbol? property,
9043case BoundFieldAccess { ExpressionSymbol: FieldSymbol { AssociatedSymbol: PropertySymbol autoProperty } } fieldAccess:
9103private bool IsPropertyOutputMoreStrictThanInput(PropertySymbol property)
9124var property = left switch
9163return field.AssociatedSymbol is PropertySymbol property ?
9177var annotations = memberSymbol switch { PropertySymbol prop => prop.GetFlowAnalysisAnnotations(), FieldSymbol field => GetFieldAnnotations(field), _ => FlowAnalysisAnnotations.None };
9797var property = node.PropertySymbol;
9824var indexer = node.Indexer;
9828indexer = (PropertySymbol)AsMemberOfType(receiverType, indexer);
9926var getMethod = ((PropertySymbol)member.OriginalDefinition).GetMethod;
Generated\BoundNodes.xml.Generated.cs (41)
326public BoundPropertyEqualsValue(SyntaxNode syntax, PropertySymbol property, ImmutableArray<LocalSymbol> locals, BoundExpression value, bool hasErrors = false)
337public PropertySymbol Property { get; }
342public BoundPropertyEqualsValue Update(PropertySymbol property, ImmutableArray<LocalSymbol> locals, BoundExpression value)
2099public BoundAwaitableInfo(SyntaxNode syntax, BoundAwaitableValuePlaceholder? awaitableInstancePlaceholder, bool isDynamic, BoundExpression? getAwaiter, PropertySymbol? isCompleted, MethodSymbol? getResult, bool hasErrors = false)
2112public PropertySymbol? IsCompleted { get; }
2118public BoundAwaitableInfo Update(BoundAwaitableValuePlaceholder? awaitableInstancePlaceholder, bool isDynamic, BoundExpression? getAwaiter, PropertySymbol? isCompleted, MethodSymbol? getResult)
5360public BoundDagPropertyEvaluation(SyntaxNode syntax, PropertySymbol property, bool isLengthOrCount, BoundDagTemp input, bool hasErrors = false)
5371public PropertySymbol Property { get; }
5377public BoundDagPropertyEvaluation Update(PropertySymbol property, bool isLengthOrCount, BoundDagTemp input)
5391public BoundDagIndexEvaluation(SyntaxNode syntax, PropertySymbol property, int index, BoundDagTemp input, bool hasErrors = false)
5402public PropertySymbol Property { get; }
5408public BoundDagIndexEvaluation Update(PropertySymbol property, int index, BoundDagTemp input)
6004public BoundPropertyGroup(SyntaxNode syntax, ImmutableArray<PropertySymbol> properties, BoundExpression? receiverOpt, LookupResultKind resultKind, bool hasErrors = false)
6013public ImmutableArray<PropertySymbol> Properties { get; }
6018public BoundPropertyGroup Update(ImmutableArray<PropertySymbol> properties, BoundExpression? receiverOpt, LookupResultKind resultKind)
6744public BoundAnonymousPropertyDeclaration(SyntaxNode syntax, PropertySymbol property, TypeSymbol type, bool hasErrors)
6754public BoundAnonymousPropertyDeclaration(SyntaxNode syntax, PropertySymbol property, TypeSymbol type)
6765public PropertySymbol Property { get; }
6770public BoundAnonymousPropertyDeclaration Update(PropertySymbol property, TypeSymbol type)
7068public BoundPropertyAccess(SyntaxNode syntax, BoundExpression? receiverOpt, PropertySymbol propertySymbol, LookupResultKind resultKind, TypeSymbol type, bool hasErrors = false)
7082public PropertySymbol PropertySymbol { get; }
7088public BoundPropertyAccess Update(BoundExpression? receiverOpt, PropertySymbol propertySymbol, LookupResultKind resultKind, TypeSymbol type)
7138public BoundIndexerAccess(SyntaxNode syntax, BoundExpression? receiverOpt, PropertySymbol indexer, ImmutableArray<BoundExpression> arguments, ImmutableArray<string> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, ImmutableArray<PropertySymbol> originalIndexersOpt, TypeSymbol type, bool hasErrors = false)
7159public PropertySymbol Indexer { get; }
7166public ImmutableArray<PropertySymbol> OriginalIndexersOpt { get; }
7171public BoundIndexerAccess Update(BoundExpression? receiverOpt, PropertySymbol indexer, ImmutableArray<BoundExpression> arguments, ImmutableArray<string> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, ImmutableArray<PropertySymbol> originalIndexersOpt, TypeSymbol type)
7234public BoundDynamicIndexerAccess(SyntaxNode syntax, BoundExpression receiver, ImmutableArray<BoundExpression> arguments, ImmutableArray<string> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, ImmutableArray<PropertySymbol> applicableIndexers, TypeSymbol type, bool hasErrors = false)
7255public ImmutableArray<PropertySymbol> ApplicableIndexers { get; }
7260public BoundDynamicIndexerAccess Update(BoundExpression receiver, ImmutableArray<BoundExpression> arguments, ImmutableArray<string> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, ImmutableArray<PropertySymbol> applicableIndexers, TypeSymbol type)
11804PropertySymbol property = GetUpdatedSymbol(node, node.Property);
12502PropertySymbol? isCompleted = GetUpdatedSymbol(node, node.IsCompleted);
13222PropertySymbol property = GetUpdatedSymbol(node, node.Property);
13229PropertySymbol property = GetUpdatedSymbol(node, node.Property);
13445ImmutableArray<PropertySymbol> properties = GetUpdatedArray(node, node.Properties);
13770PropertySymbol property = GetUpdatedSymbol(node, node.Property);
13930PropertySymbol propertySymbol = GetUpdatedSymbol(node, node.PropertySymbol);
13966PropertySymbol indexer = GetUpdatedSymbol(node, node.Indexer);
13967ImmutableArray<PropertySymbol> originalIndexersOpt = GetUpdatedArray(node, node.OriginalIndexersOpt);
13986ImmutableArray<PropertySymbol> applicableIndexers = GetUpdatedArray(node, node.ApplicableIndexers);
Symbols\Compilation_WellKnownMembers.cs (8)
242internal static Symbol? GetRuntimeMember(NamedTypeSymbol declaringType, in MemberDescriptor descriptor, SignatureComparer<MethodSymbol, FieldSymbol, PropertySymbol, TypeSymbol, ParameterSymbol> comparer, AssemblySymbol? accessWithinOpt)
248internal static Symbol? GetRuntimeMember(ImmutableArray<Symbol> members, in MemberDescriptor descriptor, SignatureComparer<MethodSymbol, FieldSymbol, PropertySymbol, TypeSymbol, ParameterSymbol> comparer, AssemblySymbol? accessWithinOpt)
327PropertySymbol property = (PropertySymbol)member;
1033internal class SpecialMembersSignatureComparer : SignatureComparer<MethodSymbol, FieldSymbol, PropertySymbol, TypeSymbol, ParameterSymbol>
1062protected override TypeSymbol GetPropertyType(PropertySymbol property)
1108protected override ImmutableArray<ParameterSymbol> GetParameters(PropertySymbol property)
1152protected override bool IsByRefProperty(PropertySymbol property)
Symbols\Source\SourceMemberContainerSymbol.cs (24)
2089var indexersBySignature = new Dictionary<PropertySymbol, PropertySymbol>(MemberSignatureComparer.DuplicateSourceComparer);
2101PropertySymbol indexer = (PropertySymbol)symbol;
2128PropertySymbol indexer,
2131Dictionary<PropertySymbol, PropertySymbol> indexersBySignature,
2163if (indexersBySignature.TryGetValue(indexer, out var prevIndexerBySignature))
2223var propertySymbol = (PropertySymbol)symbol;
3570PropertySymbol propertySymbol,
3652private static Location GetAccessorOrPropertyLocation(PropertySymbol propertySymbol, bool getNotSet)
3671private static bool ParametersMatchPropertyAccessor(PropertySymbol propertySymbol, bool getNotSet, ImmutableArray<ParameterSymbol> methodParams)
3982PropertySymbol? equalityContract = isRecordClass ? addEqualityContract() : null;
4008Debug.Assert(isRecordClass || !members.Any(m => m is PropertySymbol { GetMethod.IsEffectivelyReadOnly: false }));
4019Debug.Assert(positionalMembers.All(p => p is PropertySymbol or FieldSymbol));
4266ImmutableArray<PropertySymbol>.Empty);
4290else if (existingMember is PropertySymbol { IsStatic: false, GetMethod: { } } prop
4346MethodSymbol addGetHashCode(PropertySymbol? equalityContract)
4380PropertySymbol addEqualityContract()
4390ImmutableArray<PropertySymbol>.Empty);
4392PropertySymbol equalityContract;
4402equalityContract = (PropertySymbol)existingEqualityContractProperty;
4439MethodSymbol addThisEquals(PropertySymbol? equalityContract)