Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/ControlStruct/ExceptTranslate.cc

    rb2de2e0 r66ba544  
    1010// Created On       : Wed Jun 14 16:49:00 2017
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Tue May 26 10:56:00 2020
    13 // Update Count     : 16
     12// Last Modified On : Thr May 21 13:18:00 2020
     13// Update Count     : 15
    1414//
    1515
     
    107107                        nameOf( terminate_handler_except ),
    108108                        new ConstantExpr( Constant::null(
    109                                 terminate_handler_except->get_type()->clone()
     109                                //new PointerType(
     110                                //      noQualifiers,
     111                                        terminate_handler_except->get_type()->clone()
     112                                //      )
    110113                                ) )
    111114                        ) ) );
     
    134137                ObjectDecl * decl = dynamic_cast<ObjectDecl *>( catchStmt->get_decl() );
    135138                // Also checking the type would be nice.
    136                 if ( !decl || !dynamic_cast<PointerType *>( decl->type ) ) {
    137                         std::string kind = (CatchStmt::Terminate == catchStmt->kind) ? "catch" : "catchResume";
    138                         SemanticError( catchStmt->location, kind + " must have pointer to an exception type" );
     139                if ( decl ) {
     140                        // Pass.
     141                } else if ( CatchStmt::Terminate == catchStmt->get_kind() ) {
     142                        SemanticError(catchStmt->location, "catch must have exception type");
     143                } else {
     144                        SemanticError(catchStmt->location, "catchResume must have exception type");
    139145                }
    140146
     
    226232
    227233                void premutate( StructDecl *structDecl );
     234                Statement * postmutate( ThrowStmt *throwStmt );
    228235                Statement * postmutate( TryStmt *tryStmt );
    229236        };
     
    614621        }
    615622
     623        Statement * TryMutatorCore::postmutate( ThrowStmt * ) {
     624                // All throws should be removed by this point.
     625                assert( false );
     626        }
     627
    616628        Statement * TryMutatorCore::postmutate( TryStmt *tryStmt ) {
    617629                assert( except_decl );
Note: See TracChangeset for help on using the changeset viewer.