Ignore:
Timestamp:
Aug 14, 2008, 12:46:06 AM (16 years ago)
Author:
dai
Message:

#189への対応。型パラメータに型パラメータを指定したときにテンプレート展開の対象にならない不具合を修正。

File:
1 edited

Legend:

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

    r710 r720  
    6767        // モジュール名がシンボル名として使えない場合があるので、16進数文字列に変換する
    6868        char temporary[VN_SIZE*2] = "";
    69         for( int i=0; i<originalName.size(); i++ )
     69        for( int i=0; i<static_cast<int>(originalName.size()); i++ )
    7070        {
    7171            sprintf( temporary + strlen(temporary), "%2x", originalName[i] );
     
    112112        Type typeParameterType;
    113113        StringToType( typeParameterStr, typeParameterType );
     114
     115        if( this->IsCompilingClass() )
     116        {
     117            if( this->pCompilingClass->IsExpanded() && typeParameterType.IsTypeParameter() )
     118            {
     119                // 現在コンパイル中のクラスがテンプレート展開済みのクラスで、
     120                // 尚且つターゲットとなる型が型パラメータだったとき
     121
     122                // テンプレート展開情報を用いて型解決を行う
     123                this->pCompilingClass->ResolveExpandedClassActualTypeParameter( typeParameterType );
     124            }
     125        }
    114126
    115127        genericTypes.push_back( GenericType( "(non support)", typeParameterType ) );
Note: See TracChangeset for help on using the changeset viewer.