Ignore:
Timestamp:
Aug 22, 2007, 3:46:23 AM (17 years ago)
Author:
dai_9181
Message:
 
File:
1 edited

Legend:

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

    r290 r292  
    228228                {
    229229                    // 型パラメータだったとき
     230
     231                    int ptrLevel = PTR_LEVEL( resultType.GetBasicType() );
     232
    230233                    if( leftType.HasActualGenericType() )
    231234                    {
     
    237240                        // TODO: ベースオブジェクト(指定されていないときはObjectクラス)にセットする
    238241                        resultType.SetBasicType( DEF_OBJECT );
     242                    }
     243
     244                    for( int i=0; i<ptrLevel; i++ )
     245                    {
     246                        resultType.PtrLevelUp();
    239247                    }
    240248                }
     
    253261    char parameter[VN_SIZE];
    254262
    255     if( (string)term=="a.x")
     263    if( (string)term=="a[1]")
    256264    {
    257265        int test=0;
     
    447455    GetArrayElement(termFull,VarName,ArrayElements);
    448456    if(ArrayElements[0]){
    449         GetVarType(VarName,resultType,false);
    450         if( resultType.IsObject() ){
    451             CallIndexerGetterProc(/*UseReg,*/&resultType.GetClass(),VarName,ArrayElements,resultType);
     457        Type leftType;
     458        GetVarType(VarName,leftType,false);
     459        if( leftType.IsObject() )
     460        {
     461            CallIndexerGetterProc(/*UseReg,*/&resultType.GetClass(),VarName, leftType, ArrayElements,resultType);
    452462
    453463            isLiteral = false;
Note: See TracChangeset for help on using the changeset viewer.