예제 #1
0
        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();
            }
        }
예제 #2
0
        /// <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);
            }
        }