CodeException::GetTypeInvisible(languageElement, currentType)); 91 return; 92 } 93 } 94 else 95 { 96 switch(currentAccessor) 97 { 98 case declatt::Public: 99 case declatt::Internal: 100 case declatt::ProtectedInternal: 101 break; 102 default: 103 argument.errors.Add(ManagedLanguageCodeException::GetTypeInvisible(languageElement, currentType)); 104 return; 105 } 106 } 107 } 108 109 if(currentSymbol->GetSymbolType()==ManagedSymbolItem::TypeRename) 110 { 111 ManagedSymbolTypeRename* symbol=dynamic_cast(currentSymbol); 112 if(currentType->GetGenericDeclaration()) 113 { 114 Dictionary replacement; 115 for(vint i=0;iorderedGenericParameterNames.Count();i++) 116 { 117 ManagedTypeSymbol* key=argument.symbolManager->GetType(symbol->ItemGroup(symbol->orderedGenericParameterNames[i])->Items()[0]); 118 ManagedTypeSymbol* value=currentType->GetGenericArguments()[i]; 119 replacement.Add(key, value); 120 } 121 parentType=argument.symbolManager->ReplaceGenericArguments(currentType, replacement.Wrap()); 122 }br /> 123 else 124 { 125 parentType=symbol->type; 126 } 127 } 128 else 129 { 130 parentType=currentType; 131 } 132 } 133 } 134 135 void CollectBaseTypes(ManagedTypeSymbol* thisType, List& baseTypes, const MAP& argument) 136 { 137 vint oldCount=baseTypes.Count(); 138 if(thisType->GetGenericDeclaration()) 139 { 140 ManagedSymbolDeclaration* symbol=dynamic_cast(thisType->GetGenericDeclaration()->GetSymbol()); 141 142 Dictionary replacement; 143 for(vint i=0;iorderedGenericParameterNames.Count();i++) 144 { 145 ManagedTypeSymbol* key=argument.symbolManager->GetType(symbol->ItemGroup(symbol->orderedGenericParameterNames[i])->Items()[0]); 146 ManagedTypeSymbol* value=thisType->GetGenericArguments()[i]; 147 replacement.Add(key, value); 148 } 149 150 FOREACH(ManagedTypeSymbol*, baseType, sym |