Changeset 292 in dev for trunk/abdev/BasicCompiler32/OperatorProc.cpp
- Timestamp:
- Aug 22, 2007, 3:46:23 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler32/OperatorProc.cpp
r290 r292 252 252 SetError(-1,"キャスト演算子がオーバーロードされていません。",cp); 253 253 } 254 void CallIndexerGetterProc(const CClass *pobj_Class,char *ObjectName, char *Parameter,Type &resultType){254 void CallIndexerGetterProc(const CClass *pobj_Class,char *ObjectName, const Type &leftType, char *Parameter,Type &resultType){ 255 255 std::vector<const UserProc *> subs; 256 256 pobj_Class->GetMethods().Enum( CALC_ARRAY_GET, subs ); … … 261 261 Opcode_CallProc(Parameter,subs[0],0,ObjectName); 262 262 resultType = subs[0]->ReturnType(); 263 } 263 264 265 ///////////////////////////////////////////////////////// 266 // ☆★☆ ジェネリクスサポート ☆★☆ 267 268 if( resultType.IsTypeParameter() ) 269 { 270 // 型パラメータだったとき 271 272 int ptrLevel = PTR_LEVEL( resultType.GetBasicType() ); 273 274 if( leftType.HasActualGenericType() ) 275 { 276 // TODO: GetDummyActualGenericTypeを適切な形に実装し直す 277 resultType = leftType.GetDummyActualGenericType(); 278 } 279 else 280 { 281 // TODO: ベースオブジェクト(指定されていないときはObjectクラス)にセットする 282 resultType.SetBasicType( DEF_OBJECT ); 283 } 284 285 for( int i=0; i<ptrLevel; i++ ) 286 { 287 resultType.PtrLevelUp(); 288 } 289 } 290 291 // 292 ///////////////////////////////////////////////////////// 293 }
Note:
See TracChangeset
for help on using the changeset viewer.