internal AttributeData GetPhpMemberVisibilityAttribute(Symbol member, Accessibility accessibility) { if (member is FieldSymbol || member is MethodSymbol || member is PropertySymbol) { if (_lazyPhpMemberVisibilityAttribute == null) { _lazyPhpMemberVisibilityAttribute = new Dictionary <Accessibility, AttributeData>(); } if (!_lazyPhpMemberVisibilityAttribute.TryGetValue(accessibility, out AttributeData attr)) { // [PhpMemberVisibilityAttribute( {(int)DeclaredAccessibility} )] attr = new SynthesizedAttributeData( CoreTypes.PhpMemberVisibilityAttribute.Ctor(CoreTypes.Int32), ImmutableArray.Create(new TypedConstant(CoreTypes.Int32.Symbol, TypedConstantKind.Primitive, (int)accessibility)), ImmutableArray <KeyValuePair <string, TypedConstant> > .Empty); _lazyPhpMemberVisibilityAttribute[accessibility] = attr; } return(attr); } else { throw new ArgumentException(); } }
/// <summary> /// Convenience helper called by subclasses to add a synthesized attribute to a collection of attributes. /// </summary> internal static void AddSynthesizedAttribute(ref ArrayBuilder <SynthesizedAttributeData> attributes, SynthesizedAttributeData attribute) { if (attribute != null) { if (attributes == null) { attributes = new ArrayBuilder <SynthesizedAttributeData>(1); } attributes.Add(attribute); } }