private SourcePropertySymbol( SourceMemberContainerTypeSymbol containingType, BasePropertyDeclarationSyntax syntax, bool hasGetAccessor, bool hasSetAccessor, bool isExplicitInterfaceImplementation, TypeSymbol?explicitInterfaceType, string?aliasQualifierOpt, DeclarationModifiers modifiers, bool isAutoProperty, bool isExpressionBodied, bool isInitOnly, string memberName, Location location, BindingDiagnosticBag diagnostics ) : base( containingType, syntax, hasGetAccessor, hasSetAccessor, isExplicitInterfaceImplementation, explicitInterfaceType, aliasQualifierOpt, modifiers, hasInitializer: HasInitializer(syntax), isAutoProperty: isAutoProperty, isExpressionBodied: isExpressionBodied, isInitOnly: isInitOnly, syntax.Type.GetRefKind(), memberName, syntax.AttributeLists, location, diagnostics ) { if (IsAutoProperty) { Binder.CheckFeatureAvailability( syntax, (hasGetAccessor && !hasSetAccessor) ? MessageID.IDS_FeatureReadonlyAutoImplementedProperties : MessageID.IDS_FeatureAutoImplementedProperties, diagnostics, location ); } CheckForBlockAndExpressionBody( syntax.AccessorList, syntax.GetExpressionBodySyntax(), syntax, diagnostics ); }