Changeset 365 in dev for trunk/abdev/BasicCompiler_Common


Ignore:
Timestamp:
Nov 11, 2007, 5:15:30 PM (17 years ago)
Author:
dai_9181
Message:

32ビットコンパイラでグローバル領域のTryスコープが正常にコンパイルできないバグを修正。
Catch、Finally節を持たないTryスコープを警告の対象とした。

Location:
trunk/abdev/BasicCompiler_Common
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler_Common/error.cpp

    r359 r365  
    8888    if(num==-106) sprintf(msg,"[警告] DLLファイル \"%s\" が見つかりません。",tempKeyWord);
    8989    if(num==-107) sprintf(msg,"[警告] DLL関数 \"%s\" を参照できません。",tempKeyWord);
     90    if(num==-108) lstrcpy(msg,"[警告] Catch節、Finally節を持たない意味のないTryスコープです。");
    9091    if(num==-120) sprintf(msg,"[警告] VarPtr関数の引数にオブジェクト インスタンスが指定されました。オブジェクトの先頭アドレスを取得したいときはObjPtr関数に切り替えをお願いします。m(__)m(この警告はVarPtr→ObjPtrへの切り替えが完了したら消します(切り替えは \"適材箇所に限り\" ですので、ご注意ください!))",tempKeyWord);
    9192#else
  • trunk/abdev/BasicCompiler_Common/include/ver.h

    r364 r365  
    66// バージョン付加文字列
    77#ifdef _AMD64_
    8 #define VER_INFO        "(x64) (rev.375)"
     8#define VER_INFO        "(x64) (rev.376)"
    99#else
    10 #define VER_INFO        "(rev.375)"
     10#define VER_INFO        "(rev.376)"
    1111#endif
  • trunk/abdev/BasicCompiler_Common/src/Exception.cpp

    r364 r365  
    3838class TryScope
    3939{
     40    int sourceCodePos;
    4041    bool isDefinedFinally;
    4142
     
    6162
    6263public:
    63     TryScope()
    64         : isDefinedFinally( false )
     64    TryScope( int sourceCodePos )
     65        : sourceCodePos( sourceCodePos )
     66        , isDefinedFinally( false )
    6567    {
    6668    }
     
    6971    }
    7072
     73    int GetSourceCodePos() const
     74    {
     75        return sourceCodePos;
     76    }
    7177    const CatchScopes &GetCatchScopes() const
    7278    {
     
    237243void TryCommand()
    238244{
    239     tryScopes.push_back( TryScope() );
     245    tryScopes.push_back( TryScope( cp ) );
    240246    tryScopes.back().Try();
    241247
     
    315321        SetError(1,NULL,cp);
    316322        return;
     323    }
     324
     325    if( !tryScopes.back().IsDefinedFinally() && !tryScopes.back().IsCatched() )
     326    {
     327        // CatchもFinallyも存在しないとき
     328        SetError(-108,NULL,tryScopes.back().GetSourceCodePos() );
    317329    }
    318330
Note: See TracChangeset for help on using the changeset viewer.