Ignore:
Timestamp:
Jun 14, 2008, 12:16:27 PM (16 years ago)
Author:
dai_9181
Message:

静的リンクリンカの依存関係解決モジュールを製作中

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/ab_common/src/Lexical/Class.cpp

    r639 r640  
    869869}
    870870
    871 bool CClass::Resolve( const ObjectModule &resolver )
     871bool CClass::Resolve( const ObjectModule &resolver, ResolveErrors &resolveErrors )
    872872{
    873873    // 型パラメータ
    874874    BOOST_FOREACH( GenericType &genericType, formalGenericTypes )
    875875    {
    876         genericType.GetType().Resolve( resolver );
     876        genericType.GetType().Resolve( resolver, resolveErrors );
    877877    }
    878878
     
    882882        if( this->pSuperClass->IsNeedResolve() )
    883883        {
    884             this->pSuperClass = resolver.meta.GetClasses().FindEx( *pSuperClass );
     884            const CClass *pTempClass = resolver.meta.GetClasses().FindLike( this->pSuperClass );
     885            if( pTempClass )
     886            {
     887                this->pSuperClass = pTempClass;
     888            }
     889            else
     890            {
     891                resolveErrors.Add( ResolveError( this->pSuperClass->GetRelationalObjectModuleIndex(), this->pSuperClass->GetFullName() ) );
     892            }
    885893        }
    886894    }
     
    889897    BOOST_FOREACH( Type &superClassActualTypeParameter, superClassActualTypeParameters )
    890898    {
    891         superClassActualTypeParameter.Resolve( resolver );
     899        superClassActualTypeParameter.Resolve( resolver, resolveErrors );
    892900    }
    893901
    894902    // Blittable型情報
    895     blittableType.Resolve( resolver );
     903    blittableType.Resolve( resolver, resolveErrors );
    896904
    897905    // 実装するインターフェイス
    898906    BOOST_FOREACH( ::Interface *pInterface, interfaces )
    899907    {
    900         pInterface->Resolve( resolver );
     908        pInterface->Resolve( resolver, resolveErrors );
    901909    }
    902910
     
    904912    BOOST_FOREACH( Member *pMember, dynamicMembers )
    905913    {
    906         pMember->Resolve( resolver );
     914        pMember->Resolve( resolver, resolveErrors );
    907915    }
    908916
     
    910918    BOOST_FOREACH( Member *pMember, staticMembers )
    911919    {
    912         pMember->Resolve( resolver );
     920        pMember->Resolve( resolver, resolveErrors );
    913921    }
    914922
     
    916924    BOOST_FOREACH( CMethod *pMethod, GetDynamicMethods() )
    917925    {
    918         pMethod->Resolve( resolver );
     926        pMethod->Resolve( resolver, resolveErrors );
    919927    }
    920928
     
    922930    BOOST_FOREACH( CMethod *pMethod, staticMethods )
    923931    {
    924         pMethod->Resolve( resolver );
     932        pMethod->Resolve( resolver, resolveErrors );
    925933    }
    926934
     
    928936    BOOST_FOREACH( ActiveBasic::Common::Lexical::ExpandedTemplateClass *pExpandedTemplateClass, expandedTemplateClasses )
    929937    {
    930         pExpandedTemplateClass->Resolve( resolver );
     938        pExpandedTemplateClass->Resolve( resolver, resolveErrors );
    931939    }
    932940
Note: See TracChangeset for help on using the changeset viewer.