Changes in src/InitTweak/InitTweak.cc [65dc863:175ad32b]
- File:
-
- 1 edited
-
src/InitTweak/InitTweak.cc (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/InitTweak/InitTweak.cc
r65dc863 r175ad32b 14 14 public: 15 15 bool hasDesignations = false; 16 template<typename Init> 17 void handleInit( Init * init ) { 18 if ( ! init->get_designators().empty() ) hasDesignations = true; 19 else Visitor::visit( init ); 20 } 21 virtual void visit( SingleInit * singleInit ) { handleInit( singleInit); } 22 virtual void visit( ListInit * listInit ) { handleInit( listInit); } 16 virtual void visit( Designation * des ) { 17 if ( ! des->get_designators().empty() ) hasDesignations = true; 18 else Visitor::visit( des ); 19 } 23 20 }; 24 21 … … 173 170 174 171 UntypedExpr * increment = new UntypedExpr( new NameExpr( "++?" ) ); 175 increment->get_args().push_back( new AddressExpr( index->clone()) );172 increment->get_args().push_back( index->clone() ); 176 173 *out++ = new ExprStmt( noLabels, increment ); 177 174 } … … 383 380 template<typename CallExpr> 384 381 Expression *& callArg( CallExpr * callExpr, unsigned int pos ) { 385 if ( pos >= callExpr->get_args().size() ) assertf( false, " asking for argument that doesn't exist. Return NULL/throw exception?");382 if ( pos >= callExpr->get_args().size() ) assertf( false, "getCallArg for argument that doesn't exist: (%u); %s.", pos, toString( callExpr ).c_str() ); 386 383 for ( Expression *& arg : callExpr->get_args() ) { 387 384 if ( pos == 0 ) return arg; … … 461 458 } else if ( ArrayType * arrayType = dynamic_cast< ArrayType * >( type ) ) { 462 459 return arrayType->get_base(); 460 } else if ( ReferenceType * refType = dynamic_cast< ReferenceType * >( type ) ) { 461 return refType->get_base(); 463 462 } else { 464 463 return NULL; … … 546 545 if ( ftype->get_parameters().size() != 2 ) return 0; 547 546 548 Type * t1 = ftype->get_parameters().front()->get_type();547 Type * t1 = getPointerBase( ftype->get_parameters().front()->get_type() ); 549 548 Type * t2 = ftype->get_parameters().back()->get_type(); 550 PointerType * ptrType = dynamic_cast< PointerType * > ( t1 ); 551 assert( ptrType ); 552 553 if ( ResolvExpr::typesCompatibleIgnoreQualifiers( ptrType->get_base(), t2, SymTab::Indexer() ) ) { 549 assert( t1 ); 550 551 if ( ResolvExpr::typesCompatibleIgnoreQualifiers( t1, t2, SymTab::Indexer() ) ) { 554 552 return function; 555 553 } else {
Note:
See TracChangeset
for help on using the changeset viewer.