- Timestamp:
- Dec 18, 2023, 12:24:06 PM (7 months ago)
- Branches:
- master
- Children:
- 9fba8e6
- Parents:
- 5546eee4
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/ControlStruct/ExceptTranslate.cpp
r5546eee4 rb7898ac 482 482 ast::FunctionDecl * terminate_catch, 483 483 ast::FunctionDecl * terminate_match ) { 484 // { __cfaehm_try_terminate(`try`, `catch`, `match`); } 485 486 ast::UntypedExpr * caller = new ast::UntypedExpr(loc, new ast::NameExpr(loc, 487 "__cfaehm_try_terminate" ) ); 488 caller->args.push_back( new ast::VariableExpr(loc, try_wrapper ) ); 489 caller->args.push_back( new ast::VariableExpr(loc, terminate_catch ) ); 490 caller->args.push_back( new ast::VariableExpr(loc, terminate_match ) ); 491 492 ast::CompoundStmt * callStmt = new ast::CompoundStmt(loc); 493 callStmt->push_back( new ast::ExprStmt( loc, caller ) ); 494 return callStmt; 484 // { 485 // int __handler_index = __cfaehm_try_terminate(`try`, `match`); 486 // if ( __handler_index ) { 487 // `catch`( __handler_index, __cfaehm_get_current_termination() ); 488 // } 489 // } 490 491 ast::ObjectDecl * index = new ast::ObjectDecl( loc, "__handler_index", 492 new ast::BasicType( ast::BasicType::SignedInt ), 493 new ast::SingleInit( loc, 494 new ast::UntypedExpr( loc, 495 new ast::NameExpr( loc, "__cfaehm_try_terminate" ), 496 { 497 new ast::VariableExpr( loc, try_wrapper ), 498 new ast::VariableExpr( loc, terminate_match ), 499 } 500 ) 501 ) 502 ); 503 504 return new ast::CompoundStmt( loc, { 505 new ast::DeclStmt( loc, index ), 506 new ast::IfStmt( loc, 507 new ast::VariableExpr( loc, index ), 508 new ast::ExprStmt( loc, 509 new ast::UntypedExpr( loc, 510 new ast::VariableExpr( loc, terminate_catch ), 511 { 512 new ast::VariableExpr( loc, index ), 513 new ast::UntypedExpr( loc, 514 new ast::NameExpr( loc, "__cfaehm_get_current_termination" ) 515 ), 516 } 517 ) 518 ) 519 ), 520 } ); 495 521 } 496 522
Note: See TracChangeset
for help on using the changeset viewer.