Changeset 375 in dev


Ignore:
Timestamp:
Nov 29, 2007, 9:08:55 AM (16 years ago)
Author:
dai_9181
Message:
 
Location:
trunk/abdev
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/abdev/BasicCompiler64/Compile_Statement.cpp

    r372 r375  
    489489    //第2パラメータを取得(in~)
    490490    i=GetOneParameter(Parameter,i,collectionVar);
     491
     492    if( !GetVarType( variable, resultType, false ) )
     493    {
     494        Type collectionType;
     495        if( !NumOpe_GetType( collectionVar, Type(), collectionType ) )
     496        {
     497            isError = true;
     498            goto ErrorStep;
     499        }
     500
     501        // 未定義の場合は自動的に定義する
     502        sprintf(temporary,"%s%c%c%s", variable, 1, ESC_AS, collectionType.GetActualGenericType(0).GetClass().GetFullName().c_str() );
     503        MessageBox(0,temporary,"test",0);
     504        OpcodeDim(temporary,DIMFLAG_INITDEBUGVAR);
     505    }
    491506
    492507    // Resetメソッドを呼び出す
  • trunk/abdev/BasicCompiler_Common/include/Class.h

    r370 r375  
    395395
    396396    // インターフェイス実装
    397     bool Implements( const CClass &interfaceClass, int nowLine );
     397    bool Implements( const CClass &interfaceClass, const Jenga::Common::Strings &typeParameters, int nowLine );
    398398    bool Implements( const char *interfaceNames, int nowLine );
    399399
  • trunk/abdev/BasicCompiler_Common/src/Class.cpp

    r374 r375  
    355355}
    356356
    357 bool CClass::Implements( const CClass &interfaceClass, int nowLine )
     357bool CClass::Implements( const CClass &interfaceClass, const Jenga::Common::Strings &typeParameters, int nowLine )
    358358{
    359359    if( !interfaceClass.IsInterface() && !interfaceClass.IsComInterface() )
     
    430430    BOOST_FOREACH( const std::string &paramStr, paramStrs )
    431431    {
     432        char className[VN_SIZE];
     433        Jenga::Common::Strings typeParameters;
     434        SplitGenericClassInstance( paramStr.c_str(), className, typeParameters );
     435
    432436        //継承元クラスを取得
    433         const CClass *pInterfaceClass = compiler.GetObjectModule().meta.GetClasses().Find( paramStr.c_str() );
     437        const CClass *pInterfaceClass = compiler.GetObjectModule().meta.GetClasses().Find( className );
    434438        if( !pInterfaceClass ){
    435439            SetError(106,paramStr.c_str(),nowLine);
     
    438442
    439443        // インターフェイスを継承する
    440         Implements( *pInterfaceClass, nowLine );
     444        Implements( *pInterfaceClass, typeParameters, nowLine );
    441445    }
    442446
Note: See TracChangeset for help on using the changeset viewer.