Changeset 290 in dev for trunk/abdev/BasicCompiler32/NumOpe.cpp
- Timestamp:
- Aug 21, 2007, 11:00:25 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abdev/BasicCompiler32/NumOpe.cpp
r276 r290 122 122 else if( resultType.IsWhole() || resultType.IsObject()){ 123 123 //整数型 124 SetReg_WholeVariable(resultType .GetBasicType(),&relativeVar,useReg);124 SetReg_WholeVariable(resultType,&relativeVar,useReg); 125 125 } 126 126 else if( resultType.IsStruct() ){ … … 142 142 return true; 143 143 } 144 bool TermMemberOpe( const CClass &objClass, const Type &baseType, Type &resultType, const char *termFull, const char *termLeft, const char *member ){ 144 bool TermMemberOpe( const Type &leftType, const Type &baseType, Type &resultType, const char *termFull, const char *termLeft, const char *member ) 145 { 146 const CClass &objClass = leftType.GetClass(); 147 145 148 const int useReg = REG_EAX; 146 149 147 if( GetMemberType( objClass, member, resultType, 0, false ) ){150 if( GetMemberType( leftType, member, resultType, 0, false ) ){ 148 151 // メンバが見つかったとき 149 152 … … 157 160 true, //エラー表示あり 158 161 false, //読み込み専用 159 objClass,162 leftType, 160 163 member,&relativeVar,resultType,0)){ 161 164 return false; … … 194 197 compiler.codeGenerator.op_push( useReg ); 195 198 196 if( !Opcode_CallProc(parameter,pUserProc,PROCFLAG_NEW,termLeft ,0) ){199 if( !Opcode_CallProc(parameter,pUserProc,PROCFLAG_NEW,termLeft) ){ 197 200 198 201 return false; … … 217 220 218 221 //SetUseRegFromRax(resultType.GetBasicType(),UseReg,XmmReg); 222 223 224 ///////////////////////////////////////////////////////// 225 // ☆★☆ ジェネリクスサポート ☆★☆ 226 227 if( resultType.IsTypeParameter() ) 228 { 229 // 型パラメータだったとき 230 if( leftType.HasActualGenericType() ) 231 { 232 // TODO: GetDummyActualGenericTypeを適切な形に実装し直す 233 resultType = leftType.GetDummyActualGenericType(); 234 } 235 else 236 { 237 // TODO: ベースオブジェクト(指定されていないときはObjectクラス)にセットする 238 resultType.SetBasicType( DEF_OBJECT ); 239 } 240 } 241 242 // 243 ///////////////////////////////////////////////////////// 219 244 } 220 245 … … 227 252 bool TermOpe( const char *term, const Type &baseType, Type &resultType, bool &isLiteral, BOOL *pbUseHeap, bool isWantObject, bool *pIsClassName, bool isProcedureCallOnly ){ 228 253 char parameter[VN_SIZE]; 254 255 if( (string)term=="a.x") 256 { 257 int test=0; 258 } 229 259 230 260 // Withを解決 … … 279 309 } 280 310 281 return TermMemberOpe( leftType .GetClass(), baseType, resultType, termFull, termLeft, member );311 return TermMemberOpe( leftType, baseType, resultType, termFull, termLeft, member ); 282 312 } 283 313 globalArea:
Note:
See TracChangeset
for help on using the changeset viewer.