Changeset cd7ef0b for src/ResolvExpr
- Timestamp:
- Aug 10, 2017, 3:39:11 PM (8 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- 38d70ab
- Parents:
- 275f4b4 (diff), e1780a2 (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. - Location:
- src/ResolvExpr
- Files:
-
- 2 edited
-
CurrentObject.cc (modified) (3 diffs)
-
Resolver.cc (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/ResolvExpr/CurrentObject.cc
r275f4b4 rcd7ef0b 36 36 return constExpr->get_constant()->get_ival(); 37 37 } else { 38 assertf( false, "Non-integer constant expression in getConstValue ", toString( constExpr ).c_str() ); // xxx - might be semantic error38 assertf( false, "Non-integer constant expression in getConstValue %s", toString( constExpr ).c_str() ); // xxx - might be semantic error 39 39 } 40 40 } else if ( dynamic_cast< OneType * >( constExpr->get_result() ) ) { … … 176 176 setPosition( castExpr->get_arg() ); 177 177 } else if ( VariableExpr * varExpr = dynamic_cast< VariableExpr * >( expr ) ) { 178 assertf( dynamic_cast<EnumInstType *> ( varExpr->get_result() ), "ArrayIterator given variable that isn't an enum constant ", toString( expr ).c_str() );178 assertf( dynamic_cast<EnumInstType *> ( varExpr->get_result() ), "ArrayIterator given variable that isn't an enum constant : %s", toString( expr ).c_str() ); 179 179 index = 0; // xxx - get actual value of enum constant 180 180 } else if ( dynamic_cast< SizeofExpr * >( expr ) || dynamic_cast< AlignofExpr * >( expr ) ) { … … 518 518 curTypes = newTypes; 519 519 newTypes.clear(); 520 assertf( desigAlts.size() == curTypes.size(), "Designator alternatives (% d) and current types (%d) out of sync", desigAlts.size(), curTypes.size() );520 assertf( desigAlts.size() == curTypes.size(), "Designator alternatives (%zu) and current types (%zu) out of sync", desigAlts.size(), curTypes.size() ); 521 521 } // for 522 522 if ( desigAlts.size() > 1 ) { -
src/ResolvExpr/Resolver.cc
r275f4b4 rcd7ef0b 9 9 // Author : Richard C. Bilson 10 10 // Created On : Sun May 17 12:17:01 2015 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : T hu Mar 23 17:23:14201713 // Update Count : 21 111 // Last Modified By : Andrew Beach 12 // Last Modified On : Tus Aug 8 16:06:00 2017 13 // Update Count : 212 14 14 // 15 15 … … 71 71 virtual void visit( ReturnStmt *returnStmt ) override; 72 72 virtual void visit( ThrowStmt *throwStmt ) override; 73 virtual void visit( CatchStmt *catchStmt ) override; 73 74 74 75 virtual void visit( SingleInit *singleInit ) override; … … 368 369 369 370 void Resolver::visit( ThrowStmt *throwStmt ) { 371 // TODO: Replace *exception type with &exception type. 370 372 if ( throwStmt->get_expr() ) { 371 Expression * wrapped = new CastExpr( throwStmt->get_expr(), new BasicType( Type::Qualifiers(), BasicType::SignedInt ) ); 373 StructDecl * exception_decl = 374 lookupStruct( "__cfaehm__base_exception_t" ); 375 assert( exception_decl ); 376 Expression * wrapped = new CastExpr( 377 throwStmt->get_expr(), 378 new PointerType( 379 noQualifiers, 380 new StructInstType( 381 noQualifiers, 382 exception_decl 383 ) 384 ) 385 ); 372 386 Expression * newExpr = findSingleExpression( wrapped, *this ); 373 387 throwStmt->set_expr( newExpr ); 388 } 389 } 390 391 void Resolver::visit( CatchStmt *catchStmt ) { 392 if ( catchStmt->get_cond() ) { 393 Expression * wrapped = new CastExpr( 394 catchStmt->get_cond(), 395 new BasicType( noQualifiers, BasicType::Bool ) 396 ); 397 catchStmt->set_cond( findSingleExpression( wrapped, *this ) ); 374 398 } 375 399 }
Note:
See TracChangeset
for help on using the changeset viewer.