Changeset 45 in dev for BasicCompiler_Common


Ignore:
Timestamp:
Feb 2, 2007, 2:58:14 AM (18 years ago)
Author:
dai_9181
Message:

・オーバーロードが解決できない場合のエラーが表示されないバグを修正。
・DLL関数のByRefパラメータに変数以外の数値を指定すると正常にコンパイルされないバグを修正。

Location:
BasicCompiler_Common
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • BasicCompiler_Common/common.h

    r43 r45  
    578578void SetError(int ErrorNum,const char *KeyWord,int pos);
    579579void CompileMessage(char *buffer);
    580 void CheckDifferentType(int VarType,LONG_PTR lpVarIndex,int CalcType,LONG_PTR lpCalcIndex,char *pszFuncName,int ParmNum);
     580bool CheckDifferentType(int VarType,LONG_PTR lpVarIndex,int CalcType,LONG_PTR lpCalcIndex,char *pszFuncName,int ParmNum);
    581581
    582582//Compile.cpp
  • BasicCompiler_Common/error.cpp

    r40 r45  
    393393    if(iWarning==1) SetError(-101,temporary,cp);
    394394    else if(iWarning==2) SetError(-102,temporary,cp);
     395    else if(iWarning==3) SetError(50,temporary,cp);
    395396}
    396397
    397 void CheckDifferentType(int VarType,LONG_PTR lpVarIndex,int CalcType,LONG_PTR lpCalcIndex,char *pszFuncName,int ParmNum){
     398bool CheckDifferentType(int VarType,LONG_PTR lpVarIndex,int CalcType,LONG_PTR lpCalcIndex,char *pszFuncName,int ParmNum){
    398399
    399400    if(VarType==DEF_OBJECT||CalcType==DEF_OBJECT){
    400401        //オブジェクトインスタンスの場合
    401402        if(!(VarType==CalcType&&lpVarIndex==lpCalcIndex)){
    402             DifferentTypeError(VarType,lpVarIndex,CalcType,lpCalcIndex,2,pszFuncName,ParmNum);
    403             return;
     403            DifferentTypeError(VarType,lpVarIndex,CalcType,lpCalcIndex,3,pszFuncName,ParmNum);
     404            return false;
    404405        }
    405406    }
     
    407408    //#strictが指定されていないときは型チェックを行わないようにする
    408409    extern BOOL bStrict;
    409     if(bStrict==0) return;
     410    if(bStrict==0) return true;
    410411
    411412    if(CalcType&FLAG_PTR){
     
    421422        if(IsPtrType(VarType)&&lpCalcIndex==LITERAL_NULL){
    422423            //リテラルNULL値の場合
    423             return;
     424            return true;
    424425        }
    425426
    426427        if(VarType==DEF_PTR_VOID){
    427428            //左辺がVoidPtr型の場合は、ポインタ型すべてを受け入れる
    428             if(IsPtrType(CalcType)) return;
     429            if(IsPtrType(CalcType)) return true;
    429430        }
    430431
    431432        if(CalcType==DEF_PTR_VOID){
    432433            //右辺がVoidPtr型の場合は、ポインタ型すべてを受け入れる
    433             if(IsPtrType(VarType)) return;
     434            if(IsPtrType(VarType)) return true;
    434435        }
    435436
    436437        if(VarType!=CalcType){
    437438            DifferentTypeError(VarType,lpVarIndex,CalcType,lpCalcIndex,2,pszFuncName,ParmNum);
    438             return;
     439            return true;
    439440        }
    440441
     
    449450                    if(lpVarIndex==(LONG_PTR)pobj_tempClass){
    450451                        //継承先が等しいとき
    451                         return;
     452                        return true;
    452453                    }
    453454                }
    454455                DifferentTypeError(VarType,lpVarIndex,CalcType,lpCalcIndex,2,pszFuncName,ParmNum);
    455                 return;
     456                return true;
    456457            }
    457458        }
     
    507508        }
    508509    }
     510
     511    return true;
    509512}
Note: See TracChangeset for help on using the changeset viewer.