Changeset 465 in dev for trunk/ab5.0/abdev/BasicCompiler32
- Timestamp:
- Mar 24, 2008, 8:05:20 PM (17 years ago)
- Location:
- trunk/ab5.0/abdev/BasicCompiler32
- Files:
-
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ab5.0/abdev/BasicCompiler32/BasicCompiler.vcproj
r461 r465 1266 1266 > 1267 1267 </File> 1268 <File 1269 RelativePath="..\BasicCompiler_Common\src\Messenger.cpp" 1270 > 1271 </File> 1268 1272 <Filter 1269 1273 Name="Langauge Classes" … … 1471 1475 > 1472 1476 </File> 1477 <File 1478 RelativePath="..\BasicCompiler_Common\include\Messenger.h" 1479 > 1480 </File> 1473 1481 <Filter 1474 1482 Name="Language Classes" -
trunk/ab5.0/abdev/BasicCompiler32/CParameter.cpp
r437 r465 239 239 char temp2[255]; 240 240 sprintf(temp2,"%s関数の第%dパラメータ",procName.c_str(),i2+1); 241 SetError(19,temp2,cp);241 compiler.errorMessenger.Output(19,temp2,cp); 242 242 continue; 243 243 } … … 306 306 } 307 307 else{ 308 SetError(300,NULL,cp);308 compiler.errorMessenger.Output(300,NULL,cp); 309 309 } 310 310 } … … 368 368 if( dummyType.IsObject() ){ 369 369 if( !dummyType.GetClass().IsEqualsOrSubClass( &varType.GetClass() ) ){ 370 SetError(11,Parms[i2],cp);370 compiler.errorMessenger.Output(11,Parms[i2],cp); 371 371 } 372 372 } 373 373 else if( dummyType.IsStruct() ){ 374 374 if( !dummyType.GetClass().IsEquals( &varType.GetClass() ) ){ 375 SetError(11,Parms[i2],cp);375 compiler.errorMessenger.Output(11,Parms[i2],cp); 376 376 } 377 377 } … … 382 382 } 383 383 else{ 384 SetError(11,Parms[i2],cp);384 compiler.errorMessenger.Output(11,Parms[i2],cp); 385 385 } 386 386 } -
trunk/ab5.0/abdev/BasicCompiler32/Compile_Calc.cpp
r461 r465 130 130 compiler.codeGenerator.op_fstp_basereg( DEF_DOUBLE, REG_ESP ); 131 131 } 132 else SetError(9,NULL,cp);132 else compiler.errorMessenger.Output(9,NULL,cp); 133 133 } 134 134 void ChangeTypeToSingle(int OldType){ … … 198 198 compiler.codeGenerator.op_fstp_basereg( DEF_SINGLE, REG_ESP ); 199 199 } 200 else SetError(9,NULL,cp);200 else compiler.errorMessenger.Output(9,NULL,cp); 201 201 } 202 202 … … 254 254 } 255 255 } 256 else SetError(9,NULL,cp);256 else compiler.errorMessenger.Output(9,NULL,cp); 257 257 } 258 258 void ChangeTypeToLong(int OldType){ … … 393 393 } 394 394 else{ 395 SetError(300,NULL,cp);395 compiler.errorMessenger.Output(300,NULL,cp); 396 396 } 397 397 } … … 411 411 //ダブルクォートは不正なのでエラー扱い 412 412 variable[i]=0; 413 SetError(3,variable,cp);413 compiler.errorMessenger.Output(3,variable,cp); 414 414 return; 415 415 } … … 458 458 if(GetVarType(variable,Type(),0)){ 459 459 //変数リストに該当したとき 460 SetError(1,NULL,cp);460 compiler.errorMessenger.Output(1,NULL,cp); 461 461 } 462 462 else{ … … 465 465 { 466 466 //定数リストに該当したとき 467 SetError(1,NULL,cp);467 compiler.errorMessenger.Output(1,NULL,cp); 468 468 } 469 469 else{ 470 470 //変数リスト、定数リストに該当しないとき 471 SetError(3,variable,cp);471 compiler.errorMessenger.Output(3,variable,cp); 472 472 } 473 473 } … … 491 491 492 492 if(Command[i+1]=='\0'){ 493 SetError(1,NULL,cp);493 compiler.errorMessenger.Output(1,NULL,cp); 494 494 return; 495 495 } … … 531 531 532 532 if( lstrcmpi( variable, "This" ) == 0 ){ 533 SetError(133,NULL,cp);533 compiler.errorMessenger.Output(133,NULL,cp); 534 534 return; 535 535 } … … 593 593 if( !TermOpeOnlyVariable( variable, varType, VarRelativeVar, true ) ) 594 594 { 595 SetError();595 compiler.errorMessenger.OutputFatalError(); 596 596 return; 597 597 } 598 598 599 599 if(varType.GetBasicType()&FLAG_PTR){ 600 SetError(14,variable,cp);600 compiler.errorMessenger.Output(14,variable,cp); 601 601 return; 602 602 } … … 614 614 compiler.GetObjectModule().meta.GetBlittableTypes().GetClass( calcType ).GetStaticMethods().Enum( "_Create", userProcs ); 615 615 if( userProcs.size() != 1 ){ 616 SetError();616 compiler.errorMessenger.OutputFatalError(); 617 617 return; 618 618 } -
trunk/ab5.0/abdev/BasicCompiler32/Compile_Calc_PushVar.cpp
r308 r465 21 21 } 22 22 else if(pRelativeVar->dwKind==VAR_REFGLOBAL){ 23 SetError(300,NULL,cp);23 compiler.errorMessenger.Output(300,NULL,cp); 24 24 } 25 25 else if(pRelativeVar->dwKind==VAR_LOCAL){ … … 68 68 //64ビットの場合はedx:eaxにロード 69 69 if(reg!=REG_EAX){ 70 SetError(300,NULL,cp);70 compiler.errorMessenger.Output(300,NULL,cp); 71 71 return; 72 72 } -
trunk/ab5.0/abdev/BasicCompiler32/Compile_CallProc.cpp
r461 r465 135 135 } 136 136 else{ 137 SetError(300,NULL,cp);137 compiler.errorMessenger.Output(300,NULL,cp); 138 138 } 139 139 } … … 163 163 pMethod = pobj_c->GetStaticMethods().GetMethodPtr( pUserProc ); 164 164 if( !pMethod ){ 165 SetError(300,NULL,cp);165 compiler.errorMessenger.Output(300,NULL,cp); 166 166 return false; 167 167 } … … 181 181 //同一クラスオブジェクトの場合はプライベートアクセスを容認する 182 182 if( pMethod->IsNoneAccess() ){ 183 SetError(109,pUserProc->GetName(),cp);183 compiler.errorMessenger.Output(109,pUserProc->GetName(),cp); 184 184 return false; 185 185 } … … 188 188 if( pMethod->IsPrivate() 189 189 || pMethod->IsNoneAccess() ){ 190 SetError(109,pUserProc->GetName(),cp);190 compiler.errorMessenger.Output(109,pUserProc->GetName(),cp); 191 191 return false; 192 192 } 193 193 if( !pMethod->GetUserProc().GetParentClass().IsEqualsOrSubClass( pobj_c ) && pMethod->IsProtected() ){ 194 SetError(110,pUserProc->GetName(),cp);194 compiler.errorMessenger.Output(110,pUserProc->GetName(),cp); 195 195 return false; 196 196 } … … 200 200 //クラス内部からの呼び出し(継承によるACCESS_NONのみをエラーとする) 201 201 if( pMethod->IsNoneAccess() ){ 202 SetError(109,pUserProc->GetName(),cp);202 compiler.errorMessenger.Output(109,pUserProc->GetName(),cp); 203 203 return false; 204 204 } … … 296 296 if( !resultType.IsObject() ) 297 297 { 298 SetError();298 compiler.errorMessenger.OutputFatalError(); 299 299 } 300 300 … … 344 344 if( vtblMasterListIndex != 0 ) 345 345 { 346 SetError();346 compiler.errorMessenger.OutputFatalError(); 347 347 } 348 348 } -
trunk/ab5.0/abdev/BasicCompiler32/Compile_Func.cpp
r461 r465 263 263 || type.IsObjectPtr() && referenceKind == RefPointer ) ) 264 264 { 265 SetError(104,ObjectName,cp);265 compiler.errorMessenger.Output(104,ObjectName,cp); 266 266 } 267 267 … … 305 305 if( vtblMasterListIndex != 0 ) 306 306 { 307 SetError();307 compiler.errorMessenger.OutputFatalError(); 308 308 } 309 309 } … … 400 400 { 401 401 extern int cp; 402 SetError(1,NULL,cp);402 compiler.errorMessenger.Output(1,NULL,cp); 403 403 return; 404 404 } … … 460 460 GetOverloadSubHash( name, subs ); 461 461 if( subs.size() == 0 ){ 462 SetError(27,name,cp);462 compiler.errorMessenger.Output(27,name,cp); 463 463 return; 464 464 } … … 480 480 ) ) 481 481 { 482 SetError(67, name, cp );482 compiler.errorMessenger.Output(67, name, cp ); 483 483 } 484 484 } … … 491 491 ) ) 492 492 { 493 SetError(66, name, cp );493 compiler.errorMessenger.Output(66, name, cp ); 494 494 } 495 495 } … … 497 497 498 498 if(!pUserProc){ 499 SetError(27,name,cp);499 compiler.errorMessenger.Output(27,name,cp); 500 500 return; 501 501 } … … 504 504 pUserProc=GetSubHash(name); 505 505 if(!pUserProc){ 506 SetError(27,name,cp);506 compiler.errorMessenger.Output(27,name,cp); 507 507 return; 508 508 } … … 531 531 Type tempType; 532 532 if( !compiler.StringToType( typeName, tempType ) ){ 533 SetError(3,typeName,cp);533 compiler.errorMessenger.Output(3,typeName,cp); 534 534 return; 535 535 } … … 597 597 } 598 598 else{ 599 SetError(134,NULL,cp );599 compiler.errorMessenger.Output(134,NULL,cp ); 600 600 } 601 601 } … … 680 680 } 681 681 if(!tempType.IsWhole()){ 682 SetError(11,Parameter,cp);682 compiler.errorMessenger.Output(11,Parameter,cp); 683 683 return; 684 684 } -
trunk/ab5.0/abdev/BasicCompiler32/Compile_Object.cpp
r391 r465 22 22 23 23 if(bSomeObjects){ 24 SetError();24 compiler.errorMessenger.OutputFatalError(); 25 25 26 26 //push ebx … … 64 64 } 65 65 else{ 66 SetError();66 compiler.errorMessenger.OutputFatalError(); 67 67 } 68 68 … … 110 110 if(pClass->IsAbstract()){ 111 111 //抽象クラスだったとき 112 SetError(125,pClass->GetName(),cp);112 compiler.errorMessenger.Output(125,pClass->GetName(),cp); 113 113 } 114 114 … … 119 119 Type tempType; 120 120 NumOpe(objectSizeStr,Type(),tempType); 121 if( !tempType.IsWhole() ) SetError(49,NULL,cp);121 if( !tempType.IsWhole() ) compiler.errorMessenger.Output(49,NULL,cp); 122 122 ChangeTypeToLong(tempType.GetBasicType()); 123 123 … … 269 269 return; 270 270 } 271 if(!( tempType.IsObjectPtr() || tempType.IsVoidPtr() )) SetError(122,NULL,cp);271 if(!( tempType.IsObjectPtr() || tempType.IsVoidPtr() )) compiler.errorMessenger.Output(122,NULL,cp); 272 272 273 273 //pop eax -
trunk/ab5.0/abdev/BasicCompiler32/Compile_ProcOp.cpp
r461 r465 197 197 } 198 198 else{ 199 SetError();199 compiler.errorMessenger.OutputFatalError(); 200 200 } 201 201 } … … 242 242 { 243 243 if(pGotoLabelSchedule->GetName().size()>0){ 244 SetError(6,pGotoLabelSchedule->GetName(),pGotoLabelSchedule->GetSourceCodePos());244 compiler.errorMessenger.Output(6,pGotoLabelSchedule->GetName(),pGotoLabelSchedule->GetSourceCodePos()); 245 245 } 246 246 else{ 247 247 char temporary[255]; 248 248 sprintf(temporary,"%d",pGotoLabelSchedule->GetLineNum()); 249 SetError(6,temporary,pGotoLabelSchedule->GetSourceCodePos());249 compiler.errorMessenger.Output(6,temporary,pGotoLabelSchedule->GetSourceCodePos()); 250 250 } 251 251 } … … 273 273 } 274 274 else{ 275 SetError();275 compiler.errorMessenger.OutputFatalError(); 276 276 } 277 277 } … … 285 285 286 286 if( pUserProc->GetLocalVars().size() ){ 287 SetError();287 compiler.errorMessenger.OutputFatalError(); 288 288 return; 289 289 } … … 311 311 { 312 312 // 既にコード生成が行われている場合はエラー 313 SetError();313 compiler.errorMessenger.OutputFatalError(); 314 314 } 315 315 … … 531 531 } 532 532 if(!(temporary[0]=='('&&temporary[lstrlen(temporary)-1]==')')){ 533 SetError(1,NULL,cp);533 compiler.errorMessenger.Output(1,NULL,cp); 534 534 } 535 535 RemoveStringPare(temporary); … … 618 618 //With情報のメモリを解放 619 619 for(i3=0;i3<WithInfo.num;i3++){ 620 SetError(22,"With",WithInfo.pWithCp[i3]);620 compiler.errorMessenger.Output(22,"With",WithInfo.pWithCp[i3]); 621 621 HeapDefaultFree(WithInfo.ppName[i3]); 622 622 } … … 710 710 else 711 711 { 712 SetError();712 compiler.errorMessenger.OutputFatalError(); 713 713 } 714 714 } -
trunk/ab5.0/abdev/BasicCompiler32/Compile_Set_Var.cpp
r461 r465 50 50 } 51 51 52 SetError(1,NULL,cp);52 compiler.errorMessenger.Output(1,NULL,cp); 53 53 } 54 54 … … 155 155 if(type==DEF_DOUBLE){ 156 156 // TODO: 実装 157 SetError();157 compiler.errorMessenger.OutputFatalError(); 158 158 } 159 159 else if(type==DEF_SINGLE){ 160 160 // TODO: 実装 161 SetError();161 compiler.errorMessenger.OutputFatalError(); 162 162 } 163 163 else if(type==DEF_INT64||type==DEF_QWORD){ … … 180 180 if(!IsWholeNumberType(type)){ 181 181 //不正な型の場合 182 SetError(9,NULL,cp);182 compiler.errorMessenger.Output(9,NULL,cp); 183 183 return; 184 184 } … … 327 327 else if(pRelative->dwKind==VAR_REFGLOBAL){ 328 328 // 今は使われていない 329 SetError();329 compiler.errorMessenger.OutputFatalError(); 330 330 331 331 if(pRelative->bOffsetOffset){ -
trunk/ab5.0/abdev/BasicCompiler32/Compile_Statement.cpp
r435 r465 16 16 //ダブルクォートは不正なのでエラー扱い 17 17 leftTerm[i]=0; 18 SetError(3,leftTerm,cp);18 compiler.errorMessenger.Output(3,leftTerm,cp); 19 19 return; 20 20 } … … 48 48 (leftTerm[0]==1&&leftTerm[1]==ESC_PSMEM) 49 49 )){ 50 SetError(1,NULL,cp);50 compiler.errorMessenger.Output(1,NULL,cp); 51 51 return; 52 52 } … … 76 76 if(pUserProc){ 77 77 if( !pUserProc->IsMacro() ){ 78 SetError(10,Command,cp);78 compiler.errorMessenger.Output(10,Command,cp); 79 79 } 80 80 … … 117 117 118 118 // どこにも当てはまらなかったため、失敗 119 SetError(1,NULL,cp);119 compiler.errorMessenger.Output(1,NULL,cp); 120 120 } 121 121 … … 126 126 for(i=0;;i++){ 127 127 if(Parameter[i]=='\0'){ 128 SetError(21,NULL,cp);128 compiler.errorMessenger.Output(21,NULL,cp); 129 129 return; 130 130 } … … 355 355 compiler.codeGenerator.ContinueAreaBegin(); 356 356 357 if(!Parameter[0]) SetError(10,"While",cp);357 if(!Parameter[0]) compiler.errorMessenger.Output(10,"While",cp); 358 358 359 359 const PertialSchedule *pWhilePertialSchedule = NULL; … … 483 483 i=GetOneParameter(Parameter,0,temporary); 484 484 if(!Parameter[i]){ 485 SetError(12,"For",cp);485 compiler.errorMessenger.Output(12,"For",cp); 486 486 goto ErrorStep; 487 487 } … … 496 496 } 497 497 if(temporary[i2]=='\0'){ 498 SetError(12,"For",cp);498 compiler.errorMessenger.Output(12,"For",cp); 499 499 goto ErrorStep; 500 500 } … … 514 514 if(Parameter[i]){ 515 515 i=GetOneParameter(Parameter,i,StepNum); 516 if(Parameter[i]) SetError(12,"For",cp);516 if(Parameter[i]) compiler.errorMessenger.Output(12,"For",cp); 517 517 } 518 518 else lstrcpy(StepNum,"1"); … … 578 578 if(szNextVariable[0]){ 579 579 if(lstrcmp(szNextVariable,variable)!=0){ 580 SetError(55,szNextVariable,cp);580 compiler.errorMessenger.Output(55,szNextVariable,cp); 581 581 } 582 582 } … … 608 608 GetCustomToken( variable, Parameter, i, ESC_IN, true ); 609 609 if(!Parameter[i]){ 610 SetError(12,"Foreach",cp);610 compiler.errorMessenger.Output(12,"Foreach",cp); 611 611 isError = true; 612 612 goto ErrorStep; … … 667 667 if(szNextVariable[0]){ 668 668 if(lstrcmp(szNextVariable,variable)!=0){ 669 SetError(55,szNextVariable,cp);669 compiler.errorMessenger.Output(55,szNextVariable,cp); 670 670 } 671 671 } … … 691 691 int i,i2,i3; 692 692 693 if(Parameter[0]) SetError(10,"Do",cp);693 if(Parameter[0]) compiler.errorMessenger.Output(10,"Do",cp); 694 694 695 695 //Continueアドレスのバックアップとセット … … 894 894 void OpcodeExitSub(void){ 895 895 if( UserProc::IsGlobalAreaCompiling() ){ 896 SetError(12,"Exit Sub/Function",cp);896 compiler.errorMessenger.Output(12,"Exit Sub/Function",cp); 897 897 return; 898 898 } … … 942 942 if(basbuf[i]=='\0'){ 943 943 selectSchedules.pop_back(); 944 SetError(22,"Select",cp);944 compiler.errorMessenger.Output(22,"Select",cp); 945 945 return; 946 946 } … … 1163 1163 1164 1164 if(selectSchedules.back().typeSize==-1){ 1165 SetError(30,"Case",cp);1165 compiler.errorMessenger.Output(30,"Case",cp); 1166 1166 return; 1167 1167 } … … 1282 1282 i=GetOneParameter(Parameter,0,temporary); 1283 1283 if(!Parameter[i]){ 1284 SetError(1,NULL,cp);1284 compiler.errorMessenger.Output(1,NULL,cp); 1285 1285 return; 1286 1286 } … … 1291 1291 } 1292 1292 if(!resultType.IsWhole()){ 1293 SetError(11,Parameter,cp);1293 compiler.errorMessenger.Output(11,Parameter,cp); 1294 1294 return; 1295 1295 } … … 1300 1300 i=GetOneParameter(Parameter,i,temporary); 1301 1301 if(Parameter[i]){ 1302 SetError(1,NULL,cp);1302 compiler.errorMessenger.Output(1,NULL,cp); 1303 1303 return; 1304 1304 } -
trunk/ab5.0/abdev/BasicCompiler32/Compile_Var.cpp
r461 r465 35 35 else{ 36 36 //エラー 37 SetError(1,NULL,cp);37 compiler.errorMessenger.Output(1,NULL,cp); 38 38 return; 39 39 } … … 185 185 if( !pMember ) 186 186 { 187 if(isErrorEnabled) SetError(103,VarName,cp);187 if(isErrorEnabled) compiler.errorMessenger.Output(103,VarName,cp); 188 188 return false; 189 189 } … … 196 196 //同一クラスオブジェクトの場合はプライベートアクセスを容認する 197 197 if(pMember->IsNoneAccess()){ 198 if(isErrorEnabled) SetError(107,VarName,cp);198 if(isErrorEnabled) compiler.errorMessenger.Output(107,VarName,cp); 199 199 return false; 200 200 } … … 203 203 if((bPrivateAccess==0&&pMember->IsPrivate())|| 204 204 pMember->IsNoneAccess()){ 205 if(isErrorEnabled) SetError(107,VarName,cp);205 if(isErrorEnabled) compiler.errorMessenger.Output(107,VarName,cp); 206 206 return false; 207 207 } 208 208 else if(bPrivateAccess==0&&pMember->IsProtected()){ 209 if(isErrorEnabled) SetError(108,VarName,cp);209 if(isErrorEnabled) compiler.errorMessenger.Output(108,VarName,cp); 210 210 return false; 211 211 } … … 219 219 ){ 220 220 //Const定義の変数に書き込みアクセスをしようとした場合 221 SetError(61,VarName,cp);221 compiler.errorMessenger.Output(61,VarName,cp); 222 222 } 223 223 … … 237 237 else{ 238 238 if(lpPtrOffset[0]){ 239 if(isErrorEnabled) SetError(16,member,cp);239 if(isErrorEnabled) compiler.errorMessenger.Output(16,member,cp); 240 240 return false; 241 241 } … … 250 250 //配列オフセット 251 251 if(!GetArrayOffset(pMember->GetSubscripts(),array,pMember->GetType())){ 252 if(isErrorEnabled) SetError(14,member,cp);252 if(isErrorEnabled) compiler.errorMessenger.Output(14,member,cp); 253 253 return false; 254 254 } … … 263 263 if( resultType.IsObject() || resultType.IsStruct() ){ 264 264 if( refType != RefDot ){ 265 if(isErrorEnabled) SetError(104,member,cp);265 if(isErrorEnabled) compiler.errorMessenger.Output(104,member,cp); 266 266 return false; 267 267 } … … 279 279 if( ( resultType.IsObjectPtr() || resultType.IsStructPtr() ) 280 280 && refType != RefDot ){ 281 if(isErrorEnabled) SetError(104,member,cp);281 if(isErrorEnabled) compiler.errorMessenger.Output(104,member,cp); 282 282 return false; 283 283 } … … 293 293 if( ( resultType.IsObjectPtr() || resultType.IsStructPtr() ) 294 294 && refType != RefPointer ){ 295 if(isErrorEnabled) SetError(104,member,cp);295 if(isErrorEnabled) compiler.errorMessenger.Output(104,member,cp); 296 296 return false; 297 297 } … … 307 307 //ppObj[n]->member 308 308 if( refType != RefPointer ){ 309 if(isErrorEnabled) SetError(104,member,cp);309 if(isErrorEnabled) compiler.errorMessenger.Output(104,member,cp); 310 310 return false; 311 311 } … … 321 321 } 322 322 else{ 323 if(isErrorEnabled) SetError(104,member,cp);323 if(isErrorEnabled) compiler.errorMessenger.Output(104,member,cp); 324 324 return false; 325 325 } … … 403 403 else{ 404 404 if(lpPtrOffset[0]){ 405 SetError(16,variable,cp);405 compiler.errorMessenger.Output(16,variable,cp); 406 406 pRelativeVar->dwKind=NON_VAR; 407 407 return false; … … 485 485 compiler.pCompilingClass->IsCompilingDestructor() == false 486 486 ){ 487 SetError(131, NULL, cp );487 compiler.errorMessenger.Output(131, NULL, cp ); 488 488 } 489 489 … … 577 577 } 578 578 579 if(isErrorEnabled) SetError(3,variable,cp);579 if(isErrorEnabled) compiler.errorMessenger.Output(3,variable,cp); 580 580 pRelativeVar->dwKind=NON_VAR; 581 581 return false; … … 593 593 else{ 594 594 if(lpPtrOffset[0]){ 595 SetError(16,variable,cp);595 compiler.errorMessenger.Output(16,variable,cp); 596 596 pRelativeVar->dwKind=NON_VAR; 597 597 return false; … … 619 619 if( resultType.IsObject() ){ 620 620 //オブジェクト定数 621 SetError(130, VarName, cp );621 compiler.errorMessenger.Output(130, VarName, cp ); 622 622 } 623 623 else{ 624 624 //一般のConst変数 625 SetError(61,VarName,cp);625 compiler.errorMessenger.Output(61,VarName,cp); 626 626 } 627 627 } … … 647 647 if(array[0]){ 648 648 if(!GetArrayOffset(*pSubscripts,array,resultType)){ 649 SetError(14,variable,cp);649 compiler.errorMessenger.Output(14,variable,cp); 650 650 pRelativeVar->dwKind=NON_VAR; 651 651 return false; … … 656 656 //実態オブジェクトのメンバを参照(obj.member) 657 657 if( refType != RefDot ){ 658 SetError(104,VarName,cp);658 compiler.errorMessenger.Output(104,VarName,cp); 659 659 pRelativeVar->dwKind=NON_VAR; 660 660 return false; … … 671 671 //pObj[n].member 672 672 if( refType != RefDot ){ 673 SetError(104,VarName,cp);673 compiler.errorMessenger.Output(104,VarName,cp); 674 674 pRelativeVar->dwKind=NON_VAR; 675 675 return false; … … 681 681 //pObj->member 682 682 if( refType != RefPointer ){ 683 SetError(104,VarName,cp);683 compiler.errorMessenger.Output(104,VarName,cp); 684 684 pRelativeVar->dwKind=NON_VAR; 685 685 return false; … … 698 698 //ppObj[n]->member 699 699 if( refType != RefPointer ){ 700 SetError(104,VarName,cp);700 compiler.errorMessenger.Output(104,VarName,cp); 701 701 pRelativeVar->dwKind=NON_VAR; 702 702 return false; … … 713 713 } 714 714 else{ 715 SetError(104,VarName,cp);715 compiler.errorMessenger.Output(104,VarName,cp); 716 716 pRelativeVar->dwKind=NON_VAR; 717 717 return false; … … 719 719 } 720 720 else{ 721 SetError(102,VarName,cp);721 compiler.errorMessenger.Output(102,VarName,cp); 722 722 pRelativeVar->dwKind=NON_VAR; 723 723 return false; … … 768 768 while(1){ 769 769 if( subscripts[0] < i2 ){ 770 SetError(41,0,cp);770 compiler.errorMessenger.Output(41,0,cp); 771 771 return 0; 772 772 } … … 790 790 BOOST_FOREACH( CMember *pMember, objClass.GetDynamicMembers() ){ 791 791 if(InitBuf[i]=='\0'){ 792 SetError(41,0,cp);792 compiler.errorMessenger.Output(41,0,cp); 793 793 return false; 794 794 } … … 806 806 } 807 807 808 SetError(41,0,cp);808 compiler.errorMessenger.Output(41,0,cp); 809 809 return false; 810 810 } … … 816 816 817 817 if( subscripts.size() > 0 ){ 818 SetError(41,0,cp);818 compiler.errorMessenger.Output(41,0,cp); 819 819 return false; 820 820 } … … 931 931 while(1){ 932 932 if( subscripts[0] < i2 ){ 933 SetError(41,0,cp);933 compiler.errorMessenger.Output(41,0,cp); 934 934 return 0; 935 935 } … … 953 953 BOOST_FOREACH( CMember *pMember, objClass.GetDynamicMembers() ){ 954 954 if(InitBuf[i]=='\0'){ 955 SetError(41,0,cp);955 compiler.errorMessenger.Output(41,0,cp); 956 956 return false; 957 957 } … … 971 971 } 972 972 973 SetError(41,0,cp);973 compiler.errorMessenger.Output(41,0,cp); 974 974 return false; 975 975 } … … 981 981 982 982 if( subscripts.size() > 0 ){ 983 SetError(41,0,cp);983 compiler.errorMessenger.Output(41,0,cp); 984 984 return false; 985 985 } … … 1105 1105 if( UserProc::CompilingUserProc().GetLocalVars().DuplicateCheck( Symbol( VarName ) ) ){ 1106 1106 //2重定義のエラー 1107 SetError(15,VarName,cp);1107 compiler.errorMessenger.Output(15,VarName,cp); 1108 1108 return; 1109 1109 } … … 1218 1218 else{ 1219 1219 if( subscripts.size() > 1 ){ 1220 SetError(300,NULL,cp);1220 compiler.errorMessenger.Output(300,NULL,cp); 1221 1221 } 1222 1222 sprintf( objectSize, "%d", subscripts[0] ); … … 1230 1230 GetVarOffset( true, false, VarName, &RelativeVar, Type() ); 1231 1231 if( RelativeVar.dwKind == VAR_DIRECTMEM ){ 1232 SetError();1232 compiler.errorMessenger.OutputFatalError(); 1233 1233 } 1234 1234 SetVariableFromEax( Type( DEF_OBJECT, *compiler.GetObjectModule().meta.GetClasses().GetObjectClassPtr() ), DEF_OBJECT, &RelativeVar ); … … 1306 1306 void SetVarPtrToReg(int reg,RELATIVE_VAR *pRelativeVar){ 1307 1307 if( reg != REG_EAX ){ 1308 SetError();1308 compiler.errorMessenger.OutputFatalError(); 1309 1309 //TODO: 未完成 1310 1310 } … … 1315 1315 const UserProc *pUserProc_AddGlobalRootPtr = GetClassMethod( "_System_CGarbageCollection", "AddGlobalRootPtr" ); 1316 1316 if( !pUserProc_AddGlobalRootPtr ){ 1317 SetError(3, "_System_CGarbageCollection.AddGlobalRootPtr", -1 );1317 compiler.errorMessenger.Output(3, "_System_CGarbageCollection.AddGlobalRootPtr", -1 ); 1318 1318 return false; 1319 1319 } -
trunk/ab5.0/abdev/BasicCompiler32/MakePeHdr.cpp
r459 r465 365 365 // 名前空間が初期化されているかをチェック 366 366 if( compiler.GetNamespaceSupporter().GetLivingNamespaceScopes().size() ){ 367 SetError();367 compiler.errorMessenger.OutputFatalError(); 368 368 } 369 369 … … 443 443 //With情報のメモリを解放 444 444 for(i=0;i<WithInfo.num;i++){ 445 SetError(22,"With",WithInfo.pWithCp[i]);445 compiler.errorMessenger.Output(22,"With",WithInfo.pWithCp[i]); 446 446 HeapDefaultFree(WithInfo.ppName[i]); 447 447 } … … 451 451 // 名前空間が正しく閉じられているかをチェック 452 452 if( compiler.GetNamespaceSupporter().GetLivingNamespaceScopes().size() ){ 453 SetError(63,NULL,-1);453 compiler.errorMessenger.Output(63,NULL,-1); 454 454 } 455 455 … … 504 504 } 505 505 506 extern BOOL bError; 507 if( !bError ) 506 if( !compiler.errorMessenger.HasError() ) 508 507 { 509 CompileMessage( "リンク中..." );508 compiler.messenger.Output( "リンク中..." ); 510 509 } 511 510 … … 558 557 559 558 if(!hLib){ 560 SetError(-106,pDllProc->GetDllFileName().c_str(),pDllProc->GetCodePos());559 compiler.errorMessenger.Output(-106,pDllProc->GetDllFileName().c_str(),pDllProc->GetCodePos()); 561 560 } 562 561 } … … 565 564 if(!GetProcAddress(hLib,pDllProc->GetAlias().c_str())){ 566 565 FreeLibrary(hLib); 567 SetError(-107,pDllProc->GetAlias(),pDllProc->GetCodePos());566 compiler.errorMessenger.Output(-107,pDllProc->GetAlias(),pDllProc->GetCodePos()); 568 567 } 569 568 FreeLibrary(hLib); … … 712 711 713 712 if( pDllProc->GetDllFileName().size() > 16 ){ 714 SetError(7,NULL,cp);713 compiler.errorMessenger.Output(7,NULL,cp); 715 714 break; 716 715 } … … 831 830 CDebugSection *pobj_DebugSection; 832 831 pobj_DebugSection=new CDebugSection(); 833 extern BOOL bError; 834 if( compiler.IsDebug() && bError == 0 ) 832 if( compiler.IsDebug() && !compiler.errorMessenger.HasError() ) 835 833 { 836 CompileMessage( "デバッグ情報を生成しています。" );834 compiler.messenger.Output( "デバッグ情報を生成しています。" ); 837 835 838 836 pobj_DebugSection->make(); 839 837 840 CompileMessage( "デバッグ情報の生成が完了しました。" );838 compiler.messenger.Output( "デバッグ情報の生成が完了しました。" ); 841 839 } 842 840 … … 1122 1120 1123 1121 1124 extern BOOL bError; 1125 if(bError) goto EndWriteOpcode; 1122 if( compiler.errorMessenger.HasError() ) 1123 { 1124 goto EndWriteOpcode; 1125 } 1126 1126 1127 1127 … … 1414 1414 hFile=CreateFile(OutputFileName,GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); 1415 1415 if(hFile==INVALID_HANDLE_VALUE){ 1416 SetError(53,OutputFileName,-1);1416 compiler.errorMessenger.Output(53,OutputFileName,-1); 1417 1417 goto EndWriteOpcode; 1418 1418 } -
trunk/ab5.0/abdev/BasicCompiler32/NumOpe.cpp
r461 r465 59 59 } 60 60 else{ 61 SetError();61 compiler.errorMessenger.OutputFatalError(); 62 62 } 63 63 } … … 79 79 void ExtendRegToBigType( int reg, int bigBasicType, int baseBasicType ){ 80 80 if( reg != REG_EAX ){ 81 SetError();81 compiler.errorMessenger.OutputFatalError(); 82 82 } 83 83 switch( Type::GetBasicSize( bigBasicType ) ){ … … 190 190 // オブジェクトメンバのポインタをeaxにコピー 191 191 if( !VarToReg( tempRelativeVar, baseType, resultType ) ){ 192 SetError(11,termFull,cp);192 compiler.errorMessenger.Output(11,termFull,cp); 193 193 } 194 194 … … 224 224 if( !leftType.IsStruct() ) 225 225 { 226 SetError();226 compiler.errorMessenger.OutputFatalError(); 227 227 } 228 228 … … 332 332 { 333 333 // 関数ポインタ 334 SetError();334 compiler.errorMessenger.OutputFatalError(); 335 335 336 336 /////////////////////////////////////////////////////////////////// … … 342 342 } 343 343 344 SetError();344 compiler.errorMessenger.OutputFatalError(); 345 345 346 346 return false; … … 400 400 if( isProcedureCallOnly ) 401 401 { 402 SetError(1,NULL,cp);402 compiler.errorMessenger.Output(1,NULL,cp); 403 403 } 404 404 return false; … … 432 432 if( compiler.pCompilingClass == NULL ) 433 433 { 434 SetError(142,NULL,cp);434 compiler.errorMessenger.Output(142,NULL,cp); 435 435 return false; 436 436 } … … 465 465 { 466 466 //閉じカッコ")"に続く文字がNULLでないとき 467 SetError(42,NULL,cp);467 compiler.errorMessenger.Output(42,NULL,cp); 468 468 } 469 469 … … 525 525 526 526 //閉じカッコ")"に続く文字がNULLでないときはエラーにする 527 if(termFull[i2+1+i4+1]!='\0') SetError(42,NULL,cp);527 if(termFull[i2+1+i4+1]!='\0') compiler.errorMessenger.Output(42,NULL,cp); 528 528 529 529 //マクロ関数の場合 … … 629 629 if( isProcedureCallOnly ) 630 630 { 631 SetError(3, termLeft, cp );631 compiler.errorMessenger.Output(3, termLeft, cp ); 632 632 } 633 633 … … 645 645 // 変数の場合はeaxに変数ポインタを格納する 646 646 if( !VarToReg( relativeVar, baseType, resultType ) ){ 647 SetError(11,term,cp);647 compiler.errorMessenger.Output(11,term,cp); 648 648 } 649 649 } … … 658 658 if( !isVariable ) 659 659 { 660 SetError();660 compiler.errorMessenger.OutputFatalError(); 661 661 } 662 662 … … 678 678 if( reg != REG_EAX ){ 679 679 // TODO: 未実装 680 SetError();680 compiler.errorMessenger.OutputFatalError(); 681 681 } 682 682 … … 708 708 709 709 if(expression[0]=='\0'){ 710 SetError(1,NULL,cp);710 compiler.errorMessenger.Output(1,NULL,cp); 711 711 return false; 712 712 } … … 863 863 else GetCalcName(idCalc,temp2); 864 864 sprintf(temporary,"Operator %s",temp2); 865 SetError(27,temporary,cp);865 compiler.errorMessenger.Output(27,temporary,cp); 866 866 goto error; 867 867 } … … 892 892 } 893 893 else{ 894 SetError(3, term, cp );894 compiler.errorMessenger.Output(3, term, cp ); 895 895 goto error; 896 896 } … … 918 918 // 拡張版リテラル文字列(エスケープシーケンス可能) 919 919 if(!RemoveStringQuotes(term+2)){ 920 SetError(43,NULL,cp);920 compiler.errorMessenger.Output(43,NULL,cp); 921 921 goto error; 922 922 } … … 928 928 // 通常文字列 929 929 if(!RemoveStringQuotes(term)){ 930 SetError(43,NULL,cp);930 compiler.errorMessenger.Output(43,NULL,cp); 931 931 goto error; 932 932 } … … 976 976 } 977 977 } 978 SetError(38,term,cp);978 compiler.errorMessenger.Output(38,term,cp); 979 979 980 980 goto error; … … 990 990 if( resultType.GetBasicType() & FLAG_CAST ){ 991 991 // 型名のみ 992 SetError();992 compiler.errorMessenger.OutputFatalError(); 993 993 } 994 994 else{ … … 1087 1087 } 1088 1088 else{ 1089 SetError(300,NULL,cp);1089 compiler.errorMessenger.Output(300,NULL,cp); 1090 1090 goto error; 1091 1091 } … … 1095 1095 //該当する識別子が見当たらないときはエラー扱いにする 1096 1096 bError=1; 1097 SetError(3,term,cp);1097 compiler.errorMessenger.Output(3,term,cp); 1098 1098 type_stack[sp]=DEF_DOUBLE; 1099 1099 } … … 1243 1243 if( PTR_LEVEL( type_stack[sp-1] ) <= 0 ){ 1244 1244 //ポインタ型ではないとき 1245 SetError( 3, NULL, cp );1245 compiler.errorMessenger.Output( 3, NULL, cp ); 1246 1246 goto error; 1247 1247 } … … 1252 1252 1253 1253 default: 1254 SetError(300,NULL,cp);1254 compiler.errorMessenger.Output(300,NULL,cp); 1255 1255 goto error; 1256 1256 } … … 1260 1260 1261 1261 if(sp!=1){ 1262 SetError(1,NULL,cp);1262 compiler.errorMessenger.Output(1,NULL,cp); 1263 1263 goto error; 1264 1264 } … … 1266 1266 if(bLiteralCalculation){ 1267 1267 //右辺値が数値の定数式の場合 1268 SetError();1268 compiler.errorMessenger.OutputFatalError(); 1269 1269 } 1270 1270 else{ -
trunk/ab5.0/abdev/BasicCompiler32/NumOpe_Arithmetic.cpp
r290 r465 999 999 int castBasicType = type[sp-1]; 1000 1000 if((castBasicType&FLAG_CAST)==0){ 1001 SetError(47,NULL,cp);1001 compiler.errorMessenger.Output(47,NULL,cp); 1002 1002 return 0; 1003 1003 } -
trunk/ab5.0/abdev/BasicCompiler32/NumOpe_Logical.cpp
r308 r465 15 15 if(IsRealNumberType(type[sp-2])||IsRealNumberType(type[sp-1])){ 16 16 //いずれかの項が実数のとき 17 SetError(45,"xor",cp);17 compiler.errorMessenger.Output(45,"xor",cp); 18 18 return 0; 19 19 } … … 158 158 if(IsRealNumberType(type[sp-2])||IsRealNumberType(type[sp-1])){ 159 159 //いずれかの項が実数のとき 160 SetError(45,"or",cp);160 compiler.errorMessenger.Output(45,"or",cp); 161 161 return 0; 162 162 } … … 301 301 if(IsRealNumberType(type[sp-2])||IsRealNumberType(type[sp-1])){ 302 302 //いずれかの項が実数のとき 303 SetError(45,"and",cp);303 compiler.errorMessenger.Output(45,"and",cp); 304 304 return 0; 305 305 } … … 441 441 if(IsRealNumberType(type[sp-1])){ 442 442 //実数のとき 443 SetError(45,"Not",cp);443 compiler.errorMessenger.Output(45,"Not",cp); 444 444 return 0; 445 445 } -
trunk/ab5.0/abdev/BasicCompiler32/NumOpe_Relation.cpp
r248 r465 24 24 } 25 25 else{ 26 SetError();26 compiler.errorMessenger.OutputFatalError(); 27 27 } 28 28 }*/ -
trunk/ab5.0/abdev/BasicCompiler32/OperatorProc.cpp
r448 r465 7 7 8 8 void FreeTempObject(int reg,const CClass *pobj_c){ 9 if(!IsSafeReg(reg)) SetError(300,NULL,cp);9 if(!IsSafeReg(reg)) compiler.errorMessenger.Output(300,NULL,cp); 10 10 11 11 const CMethod *method = pobj_c->GetDestructorMethod(); … … 231 231 if(bCalcUseHeap){ 232 232 //未解放のインスタンスが存在する旨を示す警告 233 SetError(-105,NULL,cp);233 compiler.errorMessenger.Output(-105,NULL,cp); 234 234 } 235 235 … … 255 255 256 256 //エラーを発行 257 SetError(-1,"キャスト演算子がオーバーロードされていません。",cp);257 compiler.errorMessenger.Output(-1,"キャスト演算子がオーバーロードされていません。",cp); 258 258 } 259 259 void CallIndexerGetterProc( const Type &classType, const char *ObjectName, char *Parameter,Type &resultType, DWORD dwProcFlags ){ -
trunk/ab5.0/abdev/BasicCompiler32/stdafx.h
r461 r465 22 22 #include <jenga/include/common/File.h> 23 23 #include <jenga/include/common/CmdLine.h> 24 #include <jenga/include/common/Path.h> 24 25 25 26 #include "../BasicCompiler_Common/common.h" -
trunk/ab5.0/abdev/BasicCompiler32/x86CodeGenerator.cpp
r370 r465 30 30 || mod == MOD_REG ) ) 31 31 { 32 SetError();32 compiler.errorMessenger.OutputFatalError(); 33 33 } 34 34 if( isPertialSchedule && !( mod == MOD_DISP32 || mod == MOD_BASE_DISP32 ) ) 35 35 { 36 SetError();36 compiler.errorMessenger.OutputFatalError(); 37 37 } 38 38 … … 972 972 if(type==DEF_DOUBLE) pNativeCode->Put( (char)0xDD ); 973 973 else if(type==DEF_SINGLE) pNativeCode->Put( (char)0xD9 ); 974 else SetError(300,NULL,cp);974 else compiler.errorMessenger.Output(300,NULL,cp); 975 975 976 976 if(base_reg==REG_ESP){ … … 993 993 if(type==DEF_DOUBLE) pNativeCode->Put( (char)0xDD ); 994 994 else if(type==DEF_SINGLE) pNativeCode->Put( (char)0xD9 ); 995 else SetError(300,NULL,cp);995 else compiler.errorMessenger.Output(300,NULL,cp); 996 996 997 997 //オペコード、レジスタ … … 1027 1027 if(type==DEF_DOUBLE) pNativeCode->Put( (char)0xDD ); 1028 1028 else if(type==DEF_SINGLE) pNativeCode->Put( (char)0xD9 ); 1029 else SetError(300,NULL,cp);1029 else compiler.errorMessenger.Output(300,NULL,cp); 1030 1030 1031 1031 int reg=0; … … 1069 1069 if(type==DEF_DOUBLE) pNativeCode->Put( (char)0xDD ); 1070 1070 else if(type==DEF_SINGLE) pNativeCode->Put( (char)0xD9 ); 1071 else SetError(300,NULL,cp);1071 else compiler.errorMessenger.Output(300,NULL,cp); 1072 1072 1073 1073 if(base_reg==REG_ESP){ … … 1090 1090 if(type==DEF_DOUBLE) pNativeCode->Put( (char)0xDD ); 1091 1091 else if(type==DEF_SINGLE) pNativeCode->Put( (char)0xD9 ); 1092 else SetError(300,NULL,cp);1092 else compiler.errorMessenger.Output(300,NULL,cp); 1093 1093 1094 1094 //オペコード、レジスタ … … 1124 1124 if(type==DEF_DOUBLE) pNativeCode->Put( (char)0xDD ); 1125 1125 else if(type==DEF_SINGLE) pNativeCode->Put( (char)0xD9 ); 1126 else SetError(300,NULL,cp);1126 else compiler.errorMessenger.Output(300,NULL,cp); 1127 1127 1128 1128 int reg=0; … … 1182 1182 } 1183 1183 else{ 1184 SetError();1184 compiler.errorMessenger.OutputFatalError(); 1185 1185 } 1186 1186 }
Note:
See TracChangeset
for help on using the changeset viewer.