Ignore:
Timestamp:
Jun 10, 2020, 4:19:30 PM (6 years ago)
Author:
Thierry Delisle <tdelisle@…>
Branches:
ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
Children:
ab8a023
Parents:
a5873bd (diff), ee06db5c (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' into relaxed_ready

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/ControlStruct/ExceptTranslate.cc

    ra5873bd r97392b69  
    1010// Created On       : Wed Jun 14 16:49:00 2017
    1111// Last Modified By : Andrew Beach
    12 // Last Modified On : Thr May 21 13:18:00 2020
    13 // Update Count     : 15
     12// Last Modified On : Tue May 26 10:56:00 2020
     13// Update Count     : 16
    1414//
    1515
     
    107107                        nameOf( terminate_handler_except ),
    108108                        new ConstantExpr( Constant::null(
    109                                 //new PointerType(
    110                                 //      noQualifiers,
    111                                         terminate_handler_except->get_type()->clone()
    112                                 //      )
     109                                terminate_handler_except->get_type()->clone()
    113110                                ) )
    114111                        ) ) );
     
    137134                ObjectDecl * decl = dynamic_cast<ObjectDecl *>( catchStmt->get_decl() );
    138135                // Also checking the type would be nice.
    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");
     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" );
    145139                }
    146140
     
    232226
    233227                void premutate( StructDecl *structDecl );
    234                 Statement * postmutate( ThrowStmt *throwStmt );
    235228                Statement * postmutate( TryStmt *tryStmt );
    236229        };
     
    621614        }
    622615
    623         Statement * TryMutatorCore::postmutate( ThrowStmt * ) {
    624                 // All throws should be removed by this point.
    625                 assert( false );
    626         }
    627 
    628616        Statement * TryMutatorCore::postmutate( TryStmt *tryStmt ) {
    629617                assert( except_decl );
Note: See TracChangeset for help on using the changeset viewer.