private BoundEqualsValue BindEqualsValue(Binder binder, EqualsValueClauseSyntax equalsValue, DiagnosticBag diagnostics) { switch (this.MemberSymbol.Kind) { case SymbolKind.Field: { var field = (FieldSymbol)this.MemberSymbol; var enumField = field as SourceEnumConstantSymbol; if ((object)enumField != null) { return(binder.BindEnumConstantInitializer(enumField, equalsValue, diagnostics)); } else { return(binder.BindFieldInitializer(field, equalsValue, diagnostics)); } } case SymbolKind.Property: { var property = (SourcePropertySymbol)this.MemberSymbol; BoundFieldEqualsValue result = binder.BindFieldInitializer(property.BackingField, equalsValue, diagnostics); return(new BoundPropertyEqualsValue(result.Syntax, property, result.Locals, result.Value)); } case SymbolKind.Parameter: { var parameter = (ParameterSymbol)this.MemberSymbol; return(binder.BindParameterDefaultValue( equalsValue, parameter, diagnostics, out _)); } default: throw ExceptionUtilities.UnexpectedValue(this.MemberSymbol.Kind); } }
private BoundNode BindEqualsValue(Binder binder, EqualsValueClauseSyntax equalsValue, DiagnosticBag diagnostics) { switch (this.MemberSymbol.Kind) { case SymbolKind.Field: { var enumField = this.MemberSymbol as SourceEnumConstantSymbol; if ((object)enumField != null) { return(binder.BindEnumConstantInitializer(enumField, equalsValue.Value, diagnostics)); } var fieldType = ((FieldSymbol)this.MemberSymbol).GetFieldType(binder.FieldsBeingBound); return(binder.BindVariableOrAutoPropInitializer(equalsValue, fieldType, diagnostics)); } case SymbolKind.Property: { var propertyType = ((PropertySymbol)this.MemberSymbol).Type; return(binder.BindVariableOrAutoPropInitializer(equalsValue, propertyType, diagnostics)); } case SymbolKind.Parameter: { BoundExpression unusedValueBeforeConversion; // not needed. var parameter = (ParameterSymbol)this.MemberSymbol; return(binder.BindParameterDefaultValue( equalsValue, parameter.Type, diagnostics, out unusedValueBeforeConversion)); } default: Debug.Assert(false, "Unexpected member symbol kind: " + this.MemberSymbol.Kind); return(null); } }
private BoundNode BindEqualsValue(Binder binder, EqualsValueClauseSyntax equalsValue, DiagnosticBag diagnostics) { switch (this.MemberSymbol.Kind) { case SymbolKind.Field: { var enumField = this.MemberSymbol as SourceEnumConstantSymbol; if ((object)enumField != null) { return binder.BindEnumConstantInitializer(enumField, equalsValue.Value, diagnostics); } var fieldType = ((FieldSymbol)this.MemberSymbol).GetFieldType(binder.FieldsBeingBound); return binder.BindVariableOrAutoPropInitializer(equalsValue, fieldType, diagnostics); } case SymbolKind.Property: { var propertyType = ((PropertySymbol)this.MemberSymbol).Type; return binder.BindVariableOrAutoPropInitializer(equalsValue, propertyType, diagnostics); } case SymbolKind.Parameter: { BoundExpression unusedValueBeforeConversion; // not needed. var parameter = (ParameterSymbol)this.MemberSymbol; return binder.BindParameterDefaultValue( equalsValue, parameter.Type, diagnostics, out unusedValueBeforeConversion); } default: Debug.Assert(false, "Unexpected member symbol kind: " + this.MemberSymbol.Kind); return null; } }
private BoundEqualsValue BindEqualsValue(Binder binder, EqualsValueClauseSyntax equalsValue, DiagnosticBag diagnostics) { switch (this.MemberSymbol.Kind) { case SymbolKind.Field: { var field = (FieldSymbol)this.MemberSymbol; var enumField = field as SourceEnumConstantSymbol; BoundExpression result; if ((object)enumField != null) { result = binder.BindEnumConstantInitializer(enumField, equalsValue.Value, diagnostics); } else { result = binder.BindVariableOrAutoPropInitializer(equalsValue, field.GetFieldType(binder.FieldsBeingBound), diagnostics); } if (result != null) { return new BoundFieldEqualsValue(equalsValue, field, result); } break; } case SymbolKind.Property: { var property = (PropertySymbol)this.MemberSymbol; BoundExpression result = binder.BindVariableOrAutoPropInitializer(equalsValue, property.Type, diagnostics); if (result != null) { return new BoundPropertyEqualsValue(equalsValue, property, result); } break; } case SymbolKind.Parameter: { BoundExpression unusedValueBeforeConversion; // not needed. var parameter = (ParameterSymbol)this.MemberSymbol; BoundExpression result = binder.BindParameterDefaultValue( equalsValue, parameter.Type, diagnostics, out unusedValueBeforeConversion); if (result != null) { return new BoundParameterEqualsValue(equalsValue, parameter, result); } break; } default: throw ExceptionUtilities.UnexpectedValue(this.MemberSymbol.Kind); } return null; }