Changeset 729 in dev for trunk/ab5.0


Ignore:
Timestamp:
Aug 21, 2008, 11:04:52 PM (16 years ago)
Author:
dai
Message:

[728]を64bit版にマージ。

Location:
trunk/ab5.0/abdev/compiler_x64
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/compiler_x64/Compile_Object.cpp

    r704 r729  
    101101    int typeSize = pClass->GetSize();
    102102
    103     if( pClass->IsAbstract() ){
     103    if(pClass->IsAbstract())
     104    {
     105        std::string tempMessage;
     106        BOOST_FOREACH( const CMethod *pMethod, pClass->GetDynamicMethods() ){
     107            if(pMethod->IsVirtual()){
     108                if(pMethod->IsAbstract()){
     109                    if( !tempMessage.empty() )
     110                    {
     111                        tempMessage += ", ";
     112                    }
     113                    tempMessage += pMethod->GetUserProc().GetName();
     114                }
     115            }
     116        }
     117
     118        // インターフェイスのvtbl
     119        BOOST_FOREACH( const ::Interface *pInterface, pClass->GetInterfaces() )
     120        {
     121            BOOST_FOREACH( const CMethod *pMethod, pInterface->GetDynamicMethods() ){
     122                if(pMethod->IsVirtual()){
     123                    if(pMethod->IsAbstract()){
     124                        if( !tempMessage.empty() )
     125                        {
     126                            tempMessage += ", ";
     127                        }
     128                        tempMessage += pMethod->GetUserProc().GetName();
     129                    }
     130                }
     131            }
     132        }
     133
    104134        //抽象クラスだったとき
    105         compiler.errorMessenger.Output(125,pClass->GetName().c_str(),cp);
     135        compiler.errorMessenger.Output(-1,"\"%s\" は抽象クラスです。インスタンス化することはできません(抽象メソッド … " + tempMessage + ")。",cp);
    106136    }
    107137
  • trunk/ab5.0/abdev/compiler_x64/Compile_ProcOp.cpp

    r711 r729  
    176176        sprintf( temporary,
    177177            "Return New %s(ObjPtr( This ),Get_LONG_PTR( (Get_LONG_PTR( ObjPtr(This)+SizeOf(VoidPtr) ) + SizeOf(LONG_PTR)*%d) As VoidPtr ) As VoidPtr )",
    178             userProc.ReturnType().GetClass().GetFullName().c_str(),
     178            compiler.TypeToString( userProc.ReturnType() ).c_str(),
    179179            vtblMasterListIndex
    180180        );
Note: See TracChangeset for help on using the changeset viewer.