Changeset a2a8d2a6 for src/InitTweak/FixInit.cc
- Timestamp:
- Aug 25, 2016, 2:03:29 PM (8 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, 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:
- 32a2a99
- Parents:
- 486341f
- git-author:
- Rob Schluntz <rschlunt@…> (08/25/16 11:09:18)
- git-committer:
- Rob Schluntz <rschlunt@…> (08/25/16 14:03:29)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/InitTweak/FixInit.cc
r486341f ra2a8d2a6 188 188 virtual void visit( ApplicationExpr * appExpr ); 189 189 190 SemanticError errors; 190 191 private: 191 192 void handleFirstParam( Expression * firstParam ); 193 template< typename... Params > 194 void emit( const Params &... params ); 192 195 193 196 FunctionDecl * function = 0; … … 258 261 WarnStructMembers warner; 259 262 acceptAll( translationUnit, warner ); 263 264 // visitor doesn't throw so that it can collect all errors 265 if ( ! warner.errors.isEmpty() ) { 266 throw warner.errors; 267 } 260 268 } 261 269 } … … 735 743 for ( DeclarationWithType * member : unhandled ) { 736 744 // emit a warning for each unhandled member 737 warn( "in ", CodeGen::genType( function->get_functionType(), function->get_name(), false ), ", member ", member->get_name(), " may not have been ", isConstructor( funcDecl->get_name() ) ? "constructed" : "destructed" );745 emit( "in ", CodeGen::genType( function->get_functionType(), function->get_name(), false ), ", member ", member->get_name(), " may not have been ", isConstructor( funcDecl->get_name() ) ? "constructed" : "destructed" ); 738 746 } 739 747 748 // need to steal the errors before they're lost 749 old.errors.append( errors ); 740 750 *this = old; 741 751 } … … 797 807 if ( unhandled.count( memberExpr->get_member() ) ) { 798 808 // emit a warning because a member was used before it was constructed 799 warn( "in ", CodeGen::genType( function->get_functionType(), function->get_name(), false ), ", member ", memberExpr->get_member()->get_name(), " used before being constructed" );809 emit( "in ", CodeGen::genType( function->get_functionType(), function->get_name(), false ), ", member ", memberExpr->get_member()->get_name(), " used before being constructed" ); 800 810 } 801 811 } … … 805 815 Parent::visit( memberExpr ); 806 816 } 817 818 template< typename Visitor, typename... Params > 819 void error( Visitor & v, const Params &... params ) { 820 v.errors.append( toString( params... ) ); 821 } 822 823 template< typename... Params > 824 void WarnStructMembers::emit( const Params &... params ) { 825 // toggle warnings vs. errors here. 826 // warn( params... ); 827 error( *this, params... ); 828 } 807 829 } // namespace 808 830 } // namespace InitTweak
Note: See TracChangeset
for help on using the changeset viewer.