private PropertySymbol BuildProperty(PropertyDeclarationNode propertyNode, TypeSymbol typeSymbol) { TypeSymbol propertyType = typeSymbol.SymbolSet.ResolveType(propertyNode.Type, _symbolTable, typeSymbol); Debug.Assert(propertyType != null); if (propertyType != null) { PropertySymbol property = new PropertySymbol(propertyNode.Name, typeSymbol, propertyType); BuildMemberDetails(property, typeSymbol, propertyNode, propertyNode.Attributes); SymbolImplementationFlags implFlags = SymbolImplementationFlags.Regular; if (propertyNode.SetAccessor == null) { implFlags |= SymbolImplementationFlags.ReadOnly; } if ((propertyNode.Modifiers & Modifiers.Abstract) != 0) { implFlags |= SymbolImplementationFlags.Abstract; } else if ((propertyNode.Modifiers & Modifiers.Override) != 0) { implFlags |= SymbolImplementationFlags.Override; } property.SetImplementationState(implFlags); property.AddParameter(new ParameterSymbol("value", property, propertyType, ParameterMode.In)); return(property); } return(null); }