Changeset 47 in dev for BasicCompiler64


Ignore:
Timestamp:
Feb 10, 2007, 3:12:04 AM (18 years ago)
Author:
dai_9181
Message:

列挙子の比較演算が正常に行えないバグを修正。
クラス名と同名のグローバル関数を定義できないバグを修正

Location:
BasicCompiler64
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler64/CParameter.cpp

    r46 r47  
    9494        if(Parms[i]){
    9595            TYPEINFO BaseType={ppi[i].type,ppi[i].u.index};
    96             if(Parms[i][0]==1&&Parms[i][1]==ESC_BYVAL){
    97                 type=NumOpe_GetType(Parms[i]+2,&BaseType,&lpIndex);
    98                 type=MAKE_PTR_TYPE(NATURAL_TYPE(type),PTR_LEVEL(type)-1);
    99             }
    100             else{
    101                 type=NumOpe_GetType(Parms[i],&BaseType,&lpIndex);
    102             }
     96            type=NumOpe_GetType(Parms[i],&BaseType,&lpIndex);
    10397        }
    10498        else{
  • BasicCompiler64/Compile_CallProc.cpp

    r46 r47  
    246246    psi->bUse=1;
    247247
    248     BOOL bStatic=0;
     248    bool isStatic = false;
    249249    CClass *pobj_c = NULL;
    250250    CMethod *pMethod = NULL;
     
    257257            }
    258258            else{
    259                 pobj_c=pobj_DBClass->check(ObjectName);
    260                 if(pobj_c){
    261                     //静的メンバ
    262                     bStatic=1;
    263                 }
    264                 else{
    265                     //"->"によってオブジェクトを指定する通常のメンバ関数呼び出し
    266                     GetVarType(ObjectName,(LONG_PTR *)&pobj_c,1);
     259                //"->"によってオブジェクトを指定する通常のメンバ関数呼び出し
     260                int type = GetVarType(ObjectName,(LONG_PTR *)&pobj_c,0);
     261                if(!(NATURAL_TYPE(type)==DEF_OBJECT)){
     262                    pobj_c=pobj_DBClass->check(ObjectName);
     263                    if( pobj_c ){
     264                        isStatic = true;
     265                    }
     266                    else{
     267                        SetError(300,NULL,cp);
     268                    }
    267269                }
    268270            }
     
    284286        /////////////////////////////////
    285287        pMethod = NULL;
    286         if( ! bStatic ) pMethod = pobj_c->GetMethodInfo( psi );
     288        if( ! isStatic ) pMethod = pobj_c->GetMethodInfo( psi );
    287289        if( ! pMethod ){
    288290            //動的メソッドが取得できなかったときは静的メソッドを当たる
     
    294296
    295297            //静的メンバ
    296             bStatic=1;
     298            isStatic = true;
    297299        }
    298300
     
    339341
    340342    char temporary[VN_SIZE]={0};
    341     if(psi->pobj_ParentClass&&bStatic==0){
     343    if( psi->pobj_ParentClass && isStatic == false ){
    342344        //_System_LocalThis(第一パラメータ)のダミーを作成
    343345        lstrcpy(temporary,"0,");
     
    413415        }////////////////////////////////////////////
    414416
    415         if(psi->pobj_ParentClass&&bStatic==0){
     417        if( psi->pobj_ParentClass && isStatic == false ){
    416418            //mov rdx,r13
    417419            op_mov_RR(REG_RDX,REG_R13);
     
    424426
    425427
    426     if(psi->pobj_ParentClass&&bStatic==0){
     428    if( psi->pobj_ParentClass && isStatic == false ){
    427429        ///////////////////////////////
    428430        // メンバ関数の場合
  • BasicCompiler64/Compile_Statement.cpp

    r40 r47  
    7171    }
    7272
     73    if(lstrcmp(buffer,"EnumX.EnumX")==0){
     74        MessageBeep(0);
     75    }
    7376
    7477    int idProc;
Note: See TracChangeset for help on using the changeset viewer.