Changeset 304 in dev for trunk/abdev/BasicCompiler64


Ignore:
Timestamp:
Aug 26, 2007, 2:54:38 AM (17 years ago)
Author:
dai_9181
Message:

Superが機能しないバグを修正。
ソースコードが小さいとソース付加に失敗するバグを修正。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler64/Compile_CallProc.cpp

    r266 r304  
    113113    const CClass *pobj_c = NULL;
    114114    const CMethod *pMethod = NULL;
     115    Type leftType;
     116    bool isFixedClass = false;
    115117    if( pUserProc->GetParentClassPtr() ){
    116118        //クラスのメンバ関数を呼び出す場合はアクセスチェックを行う
    117         if(ObjectName[0] && (dwFlags&PROCFLAG_NEW)==0){
    118             if(lstrcmpi(ObjectName,"Super")==0){
     119        if(ObjectName[0] && (dwFlags&PROCFLAG_NEW)==0)
     120        {
     121            if(lstrcmpi(ObjectName,"Super")==0)
     122            {
    119123                //クラスメンバ関数内から基底クラスの呼び出し
    120                 pobj_c=compiler.pCompilingClass;
    121             }
    122             else{
     124                pobj_c=&compiler.pCompilingClass->GetSuperClass();
     125
     126                isFixedClass = true;
     127            }
     128            else
     129            {
    123130                //"->"によってオブジェクトを指定する通常のメンバ関数呼び出し
    124131                Type varType;
     
    336343    }
    337344
    338     if( pUserProc->IsVirtual() ){
     345    if( pUserProc->IsVirtual() && !isFixedClass ){
    339346        //仮想関数(オブジェクトメソッド)呼び出し
    340347        //pObj->func_table->func1
Note: See TracChangeset for help on using the changeset viewer.