Ejemplo n.º 1
0
        public override void AddMember(MemberSymbol memberSymbol)
        {
            if (primaryPartialClass != null)
            {
                primaryPartialClass.AddMember(memberSymbol);

                return;
            }

            Debug.Assert(memberSymbol != null);

            if (memberSymbol.Type == SymbolType.Constructor)
            {
                if ((memberSymbol.Visibility & MemberVisibility.Static) == 0)
                {
                    Debug.Assert(constructor == null);
                    constructor = (ConstructorSymbol)memberSymbol;
                }
                else
                {
                    Debug.Assert(staticConstructor == null);
                    staticConstructor = (ConstructorSymbol)memberSymbol;
                }
            }
            else if (memberSymbol.Type == SymbolType.Indexer)
            {
                Debug.Assert(IsApplicationType == false || indexer == null);
                indexer = (IndexerSymbol)memberSymbol;
            }
            else
            {
                base.AddMember(memberSymbol);
            }
        }
Ejemplo n.º 2
0
        private TypeSymbol CreateArrayTypeCore(TypeSymbol itemTypeSymbol)
        {
            TypeSymbol arrayTypeSymbol =
                (TypeSymbol)((ISymbolTable)SystemNamespace).FindSymbol("Array", null, SymbolFilter.Types);

            Debug.Assert(arrayTypeSymbol != null);

            TypeSymbol specificArrayTypeSymbol = new ClassSymbol("Array", SystemNamespace);

            foreach (MemberSymbol memberSymbol in arrayTypeSymbol.Members)
            {
                specificArrayTypeSymbol.AddMember(memberSymbol);
            }

            IndexerSymbol indexerSymbol = new IndexerSymbol(specificArrayTypeSymbol, itemTypeSymbol,
                                                            MemberVisibility.Public);

            indexerSymbol.SetScriptIndexer();
            specificArrayTypeSymbol.AddMember(indexerSymbol);
            specificArrayTypeSymbol.SetIgnoreNamespace();
            specificArrayTypeSymbol.SetNativeArray();

            return(specificArrayTypeSymbol);
        }