Ignore:
Timestamp:
Mar 24, 2008, 8:05:20 PM (17 years ago)
Author:
dai_9181
Message:

Messenger/ErrorMessengerクラスを導入。SetError関数によるエラー生成を廃止した。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/BasicCompiler32/NumOpe.cpp

    r461 r465  
    5959    }
    6060    else{
    61         SetError();
     61        compiler.errorMessenger.OutputFatalError();
    6262    }
    6363}
     
    7979void ExtendRegToBigType( int reg, int bigBasicType, int baseBasicType ){
    8080    if( reg != REG_EAX ){
    81         SetError();
     81        compiler.errorMessenger.OutputFatalError();
    8282    }
    8383    switch( Type::GetBasicSize( bigBasicType ) ){
     
    190190                // オブジェクトメンバのポインタをeaxにコピー
    191191                if( !VarToReg( tempRelativeVar, baseType, resultType ) ){
    192                     SetError(11,termFull,cp);
     192                    compiler.errorMessenger.Output(11,termFull,cp);
    193193                }
    194194
     
    224224            if( !leftType.IsStruct() )
    225225            {
    226                 SetError();
     226                compiler.errorMessenger.OutputFatalError();
    227227            }
    228228
     
    332332    {
    333333        // 関数ポインタ
    334         SetError();
     334        compiler.errorMessenger.OutputFatalError();
    335335
    336336        ///////////////////////////////////////////////////////////////////
     
    342342    }
    343343
    344     SetError();
     344    compiler.errorMessenger.OutputFatalError();
    345345
    346346    return false;
     
    400400            if( isProcedureCallOnly )
    401401            {
    402                 SetError(1,NULL,cp);
     402                compiler.errorMessenger.Output(1,NULL,cp);
    403403            }
    404404            return false;
     
    432432        if( compiler.pCompilingClass == NULL )
    433433        {
    434             SetError(142,NULL,cp);
     434            compiler.errorMessenger.Output(142,NULL,cp);
    435435            return false;
    436436        }
     
    465465            {
    466466                //閉じカッコ")"に続く文字がNULLでないとき
    467                 SetError(42,NULL,cp);
     467                compiler.errorMessenger.Output(42,NULL,cp);
    468468            }
    469469
     
    525525
    526526                //閉じカッコ")"に続く文字がNULLでないときはエラーにする
    527                 if(termFull[i2+1+i4+1]!='\0') SetError(42,NULL,cp);
     527                if(termFull[i2+1+i4+1]!='\0') compiler.errorMessenger.Output(42,NULL,cp);
    528528
    529529                //マクロ関数の場合
     
    629629    if( isProcedureCallOnly )
    630630    {
    631         SetError(3, termLeft, cp );
     631        compiler.errorMessenger.Output(3, termLeft, cp );
    632632    }
    633633
     
    645645        // 変数の場合はeaxに変数ポインタを格納する
    646646        if( !VarToReg( relativeVar, baseType, resultType ) ){
    647             SetError(11,term,cp);
     647            compiler.errorMessenger.Output(11,term,cp);
    648648        }
    649649    }
     
    658658    if( !isVariable )
    659659    {
    660         SetError();
     660        compiler.errorMessenger.OutputFatalError();
    661661    }
    662662
     
    678678    if( reg != REG_EAX ){
    679679        // TODO: 未実装
    680         SetError();
     680        compiler.errorMessenger.OutputFatalError();
    681681    }
    682682
     
    708708
    709709    if(expression[0]=='\0'){
    710         SetError(1,NULL,cp);
     710        compiler.errorMessenger.Output(1,NULL,cp);
    711711        return false;
    712712    }
     
    863863                        else GetCalcName(idCalc,temp2);
    864864                        sprintf(temporary,"Operator %s",temp2);
    865                         SetError(27,temporary,cp);
     865                        compiler.errorMessenger.Output(27,temporary,cp);
    866866                        goto error;
    867867                    }
     
    892892                    }
    893893                    else{
    894                         SetError(3, term, cp );
     894                        compiler.errorMessenger.Output(3, term, cp );
    895895                        goto error;
    896896                    }
     
    918918                        // 拡張版リテラル文字列(エスケープシーケンス可能)
    919919                        if(!RemoveStringQuotes(term+2)){
    920                             SetError(43,NULL,cp);
     920                            compiler.errorMessenger.Output(43,NULL,cp);
    921921                            goto error;
    922922                        }
     
    928928                        // 通常文字列
    929929                        if(!RemoveStringQuotes(term)){
    930                             SetError(43,NULL,cp);
     930                            compiler.errorMessenger.Output(43,NULL,cp);
    931931                            goto error;
    932932                        }
     
    976976                                }
    977977                            }
    978                             SetError(38,term,cp);
     978                            compiler.errorMessenger.Output(38,term,cp);
    979979
    980980                            goto error;
     
    990990                        if( resultType.GetBasicType() & FLAG_CAST ){
    991991                            // 型名のみ
    992                             SetError();
     992                            compiler.errorMessenger.OutputFatalError();
    993993                        }
    994994                        else{
     
    10871087                        }
    10881088                        else{
    1089                             SetError(300,NULL,cp);
     1089                            compiler.errorMessenger.Output(300,NULL,cp);
    10901090                            goto error;
    10911091                        }
     
    10951095                    //該当する識別子が見当たらないときはエラー扱いにする
    10961096                    bError=1;
    1097                     SetError(3,term,cp);
     1097                    compiler.errorMessenger.Output(3,term,cp);
    10981098                    type_stack[sp]=DEF_DOUBLE;
    10991099                }
     
    12431243                if( PTR_LEVEL( type_stack[sp-1] ) <= 0 ){
    12441244                    //ポインタ型ではないとき
    1245                     SetError( 3, NULL, cp );
     1245                    compiler.errorMessenger.Output( 3, NULL, cp );
    12461246                    goto error;
    12471247                }
     
    12521252
    12531253            default:
    1254                 SetError(300,NULL,cp);
     1254                compiler.errorMessenger.Output(300,NULL,cp);
    12551255                goto error;
    12561256        }
     
    12601260
    12611261    if(sp!=1){
    1262         SetError(1,NULL,cp);
     1262        compiler.errorMessenger.Output(1,NULL,cp);
    12631263        goto error;
    12641264    }
     
    12661266    if(bLiteralCalculation){
    12671267        //右辺値が数値の定数式の場合
    1268         SetError();
     1268        compiler.errorMessenger.OutputFatalError();
    12691269    }
    12701270    else{
Note: See TracChangeset for help on using the changeset viewer.