Changes in / [90e2334:bda58ad]
- Location:
- src
- Files:
-
- 6 edited
-
Common/SemanticError.cc (modified) (2 diffs)
-
Common/SemanticError.h (modified) (3 diffs)
-
InitTweak/FixInit.cc (modified) (5 diffs)
-
tests/.expect/ctorWarnings.txt (modified) (1 diff)
-
tests/Makefile.am (modified) (1 diff)
-
tests/Makefile.in (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/Common/SemanticError.cc
r90e2334 rbda58ad 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // SemanticError.cc -- 7 // SemanticError.cc -- 8 8 // 9 9 // Author : Richard C. Bilson … … 26 26 27 27 SemanticError::SemanticError( std::string error ) { 28 append(error );28 errors.push_back( std::string( "Error: " ) + error ); 29 29 } 30 30 31 31 void SemanticError::append( SemanticError &other ) { 32 errors.splice( errors.end(), other.errors ); 33 } 34 35 void SemanticError::append( const std::string & msg ) { 36 errors.push_back( std::string( "Error: ") + msg ); 32 errors.splice( errors.end(), other.errors ); 37 33 } 38 34 -
src/Common/SemanticError.h
r90e2334 rbda58ad 5 5 // file "LICENCE" distributed with Cforall. 6 6 // 7 // SemanticError.h -- 7 // SemanticError.h -- 8 8 // 9 9 // Author : Richard C. Bilson … … 31 31 32 32 void append( SemanticError &other ); 33 void append( const std::string & );34 33 bool isEmpty() const; 35 34 void print( std::ostream &os ); … … 43 42 template< typename T > 44 43 SemanticError::SemanticError( const std::string &error, const T *obj ) { 45 append( toString( error, obj ) ); 44 std::ostringstream os; 45 os << "Error: " << error; 46 obj->print( os ); 47 errors.push_back( os.str() ); 46 48 } 47 48 49 49 50 #endif // SEMANTICERROR_H -
src/InitTweak/FixInit.cc
r90e2334 rbda58ad 188 188 virtual void visit( ApplicationExpr * appExpr ); 189 189 190 SemanticError errors;191 190 private: 192 191 void handleFirstParam( Expression * firstParam ); 193 template< typename... Params >194 void emit( const Params &... params );195 192 196 193 FunctionDecl * function = 0; … … 261 258 WarnStructMembers warner; 262 259 acceptAll( translationUnit, warner ); 263 264 // visitor doesn't throw so that it can collect all errors265 if ( ! warner.errors.isEmpty() ) {266 throw warner.errors;267 }268 260 } 269 261 } … … 743 735 for ( DeclarationWithType * member : unhandled ) { 744 736 // emit a warning for each unhandled member 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" );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" ); 746 738 } 747 739 748 // need to steal the errors before they're lost749 old.errors.append( errors );750 740 *this = old; 751 741 } … … 807 797 if ( unhandled.count( memberExpr->get_member() ) ) { 808 798 // emit a warning because a member was used before it was constructed 809 emit( "in ", CodeGen::genType( function->get_functionType(), function->get_name(), false ), ", member ", memberExpr->get_member()->get_name(), " used before being constructed" );799 warn( "in ", CodeGen::genType( function->get_functionType(), function->get_name(), false ), ", member ", memberExpr->get_member()->get_name(), " used before being constructed" ); 810 800 } 811 801 } … … 815 805 Parent::visit( memberExpr ); 816 806 } 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 }829 807 } // namespace 830 808 } // namespace InitTweak -
src/tests/.expect/ctorWarnings.txt
r90e2334 rbda58ad 1 1 CFA Version 1.0.0 (debug) 2 Error: in void ?{}(struct A *a, int x), member z may not have been constructed 3 Error: in void ?{}(struct B *b), member a2 used before being constructed 4 Error: in void ?{}(struct B *b), member a2 may not have been constructed 5 Error: in void ?{}(struct B *b), member a3 may not have been constructed 6 Error: in void ^?{}(struct B *b), member a2 may not have been destructed 7 Error: in void ^?{}(struct B *b), member a3 may not have been destructed 8 make: *** [ctorWarnings] Error 1 2 Warning: in void ?{}(struct A *a, int x), member z may not have been constructed 3 Warning: in void ?{}(struct B *b), member a2 used before being constructed 4 Warning: in void ?{}(struct B *b), member a2 may not have been constructed 5 Warning: in void ?{}(struct B *b), member a3 may not have been constructed 6 Warning: in void ^?{}(struct B *b), member a2 may not have been destructed 7 Warning: in void ^?{}(struct B *b), member a3 may not have been destructed -
src/tests/Makefile.am
r90e2334 rbda58ad 63 63 64 64 ctorWarnings: ctorWarnings.c 65 ${CC} ${CFALGS} -CFA -XCFA -p ${<} -o ${@}65 ${CC} ${CFALGS} -CFA -XCFA -p ${<} -o /dev/null 2> ${@} 66 66 -
src/tests/Makefile.in
r90e2334 rbda58ad 671 671 672 672 ctorWarnings: ctorWarnings.c 673 ${CC} ${CFALGS} -CFA -XCFA -p ${<} -o ${@}673 ${CC} ${CFALGS} -CFA -XCFA -p ${<} -o /dev/null 2> ${@} 674 674 675 675 # Tell versions [3.59,3.63) of GNU make to not export all variables.
Note:
See TracChangeset
for help on using the changeset viewer.