Ignore:
Timestamp:
Aug 23, 2007, 10:58:43 PM (17 years ago)
Author:
dai_9181
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler_Common/src/Compiler.cpp

    r299 r301  
    2828        // ジェネリッククラスをインスタンス化した型の場合
    2929        int i = 0;
    30         char className[VN_SIZE], typeParameter[VN_SIZE];
     30        char className[VN_SIZE];
    3131        GetIdentifierToken( className, typeName.c_str(), i );
    32         i++;
    33         GetIdentifierToken( typeParameter, typeName.c_str(), i );
    3432
    3533        // ジェネリクスクラスを取得
    3634        const CClass *pGenericClass = this->GetObjectModule().meta.GetClasses().Find( className );
    3735
    38         // 型パラメータの型情報を取得
    39         Type baseType;
    40         StringToType( typeParameter, baseType );
     36        if( !pGenericClass )
     37        {
     38            Jenga::Throw( "StringToType内のジェネリクスクラス取得部分でpGenericClassがNULL" );
     39        }
     40
     41        if( typeName[i] != '<' )
     42        {
     43            Jenga::Throw( "StringToType内でジェネリクス構文の解析に失敗" );
     44        }
    4145
    4246        GenericTypes genericTypes;
    43         genericTypes.push_back( GenericType( "(non support)", baseType ) );
     47        while( true )
     48        {
     49            i++;
     50
     51            char typeParameter[VN_SIZE];
     52            GetIdentifierToken( typeParameter, typeName.c_str(), i );
     53
     54            // 型パラメータの型情報を取得
     55            Type baseType;
     56            StringToType( typeParameter, baseType );
     57
     58            genericTypes.push_back( GenericType( "(non support)", baseType ) );
     59
     60            if( typeName[i] != ',' )
     61            {
     62                break;
     63            }
     64        }
    4465
    4566        // 基本型をセット
Note: See TracChangeset for help on using the changeset viewer.