Changeset 304 in dev for trunk/abdev/BasicCompiler32


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/BasicCompiler32/Compile_CallProc.cpp

    r301 r304  
    105105    const CMethod *pMethod = NULL;
    106106    Type leftType;
     107    bool isFixedClass = false;
    107108    if( pUserProc->GetParentClassPtr() ){
    108109        //クラスのメンバ関数を呼び出す場合はアクセスチェックを行う
    109         if(ObjectName[0] && (dwFlags&PROCFLAG_NEW)==0){
    110             if(lstrcmpi(ObjectName,"Super")==0){
     110        if(ObjectName[0] && (dwFlags&PROCFLAG_NEW)==0)
     111        {
     112            if(lstrcmpi(ObjectName,"Super")==0)
     113            {
    111114                //クラスメンバ関数内から基底クラスの呼び出し
    112                 pobj_c=compiler.pCompilingClass;
    113             }
    114             else{
     115                pobj_c=&compiler.pCompilingClass->GetSuperClass();
     116
     117                isFixedClass = true;
     118            }
     119            else
     120            {
    115121                //"->"によってオブジェクトを指定する通常のメンバ関数呼び出し
    116122                Type varType;
     
    313319    }
    314320
    315     if( pUserProc->IsVirtual() ){
     321    if( pUserProc->IsVirtual() && !isFixedClass ){
    316322        //仮想関数(オブジェクトメソッド)呼び出し
    317323        //pObj->func_table->func1
Note: See TracChangeset for help on using the changeset viewer.