Changeset 424 in dev for trunk/abdev/BasicCompiler32


Ignore:
Timestamp:
Mar 10, 2008, 5:39:36 PM (17 years ago)
Author:
dai_9181
Message:

・ジェネリックな型をパラメータに持つメソッドのオーバーロード解決に対応した。
・型パラメータの制約クラス指定に対応した。

Location:
trunk/abdev/BasicCompiler32
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler32/Compile_Func.cpp

    r370 r424  
    452452
    453453        //オーバーロードを解決
    454         pUserProc=OverloadSolution( name, subs, *pBaseParams, Type() );
     454        pUserProc=OverloadSolution( name, subs, *pBaseParams, Type(), Type() );
    455455
    456456        if( isCallOn && baseType.IsDelegate() )
  • trunk/abdev/BasicCompiler32/Compile_Statement.cpp

    r415 r424  
    10221022
    10231023                        //オーバーロードを解決
    1024                         const UserProc *pUserProc = OverloadSolution("==",subs, params, NULL);
     1024                        const UserProc *pUserProc = OverloadSolution( "==", subs, params, Type( DEF_BOOLEAN ), type1 );
    10251025
    10261026                        delete params[0];
  • trunk/abdev/BasicCompiler32/Compile_Var.cpp

    r421 r424  
    428428                int ptrLevel = PTR_LEVEL( resultType.GetBasicType() );
    429429
    430                 // TODO: ベースオブジェクト(指定されていないときはObjectクラス)にセットする
     430                // 制約クラス(指定されていないときはObjectクラス)にセットする
    431431                resultType.SetBasicType( DEF_OBJECT );
    432432
  • trunk/abdev/BasicCompiler32/Opcode.h

    r415 r424  
    190190
    191191private:
    192     bool EvaluateOverloadScore( int level, const Parameters &targetParms, const Type &targetResultType, bool &isErrored );
     192    bool EvaluateOverloadScore( int level, const Parameters &targetParms, const Type &targetResultType, const Type &leftType, const UserProc &userProc, bool &isErrored );
    193193public:
    194     const UserProc *_OverloadSolution( const char *name, std::vector<const UserProc *> &subs, bool isEnabledReturnType = false );
    195     const UserProc *OverloadSolution( const char *name, std::vector<const UserProc *> &subs, bool isEnabledReturnType = false );
     194    const UserProc *_OverloadSolution( const char *name, std::vector<const UserProc *> &subs, const Type &leftType, bool isEnabledReturnType );
     195    const UserProc *OverloadSolution( const char *name, std::vector<const UserProc *> &subs, const Type &leftType, bool isEnabledReturnType = false );
    196196
    197197    void ApplyDefaultParameters( const Parameters &params );
  • trunk/abdev/BasicCompiler32/OperatorProc.cpp

    r402 r424  
    6060    if(idCalc==CALC_EQUAL) lstrcpy(temporary,"==");
    6161    else GetCalcName(idCalc,temporary);
    62     const UserProc *pUserProc = OverloadSolution( temporary, subs, params, baseType );
     62    const UserProc *pUserProc = OverloadSolution( temporary, subs, params, baseType, leftType );
    6363
    6464    if(!pUserProc){
Note: See TracChangeset for help on using the changeset viewer.