- File:
-
- 1 edited
-
src/ResolvExpr/AlternativeFinder.cc (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/ResolvExpr/AlternativeFinder.cc
r6137fbb rb6d6e97 75 75 76 76 namespace { 77 void printAlts( const AltList &list, std::ostream &os, unsigned int indentAmt = 0 ) { 78 Indenter indent = { Indenter::tabsize, indentAmt }; 77 void printAlts( const AltList &list, std::ostream &os, int indent = 0 ) { 79 78 for ( AltList::const_iterator i = list.begin(); i != list.end(); ++i ) { 80 79 i->print( os, indent ); … … 196 195 AltList winners; 197 196 findMinCost( alternatives.begin(), alternatives.end(), back_inserter( winners ) ); 198 stream << "Cannot choose between " << winners.size() << " alternatives for expression \n";197 stream << "Cannot choose between " << winners.size() << " alternatives for expression "; 199 198 expr->print( stream ); 200 stream << "Alternatives are: \n";201 printAlts( winners, stream, 1);199 stream << "Alternatives are:"; 200 printAlts( winners, stream, 8 ); 202 201 throw SemanticError( stream.str() ); 203 202 } … … 605 604 Alternative newerAlt( newAlt ); 606 605 newerAlt.env = newEnv; 607 assert f( (*candidate)->get_uniqueId(), "Assertion candidate does not have a unique ID: %s", toString( *candidate ).c_str() );606 assert( (*candidate)->get_uniqueId() ); 608 607 DeclarationWithType *candDecl = static_cast< DeclarationWithType* >( Declaration::declFromId( (*candidate)->get_uniqueId() ) ); 609 608 … … 729 728 PRINT( 730 729 std::cerr << "known function ops:" << std::endl; 731 printAlts( funcOpFinder.alternatives, std::cerr, 1);730 printAlts( funcOpFinder.alternatives, std::cerr, 8 ); 732 731 ) 733 732 … … 839 838 bool isLvalue( Expression *expr ) { 840 839 // xxx - recurse into tuples? 841 return expr-> result&& ( expr->get_result()->get_lvalue() || dynamic_cast< ReferenceType * >( expr->get_result() ) );840 return expr->has_result() && ( expr->get_result()->get_lvalue() || dynamic_cast< ReferenceType * >( expr->get_result() ) ); 842 841 } 843 842 … … 973 972 PRINT( std::cerr << "nameExpr is " << nameExpr->get_name() << std::endl; ) 974 973 for ( std::list< DeclarationWithType* >::iterator i = declList.begin(); i != declList.end(); ++i ) { 975 VariableExpr newExpr( *i );974 VariableExpr newExpr( *i, nameExpr->get_argName() ); 976 975 alternatives.push_back( Alternative( newExpr.clone(), env, Cost::zero ) ); 977 976 PRINT( … … 1268 1267 // O(N^2) checks of d-types with e-types 1269 1268 for ( InitAlternative & initAlt : initExpr->get_initAlts() ) { 1270 Type * toType = resolveTypeof( initAlt.type ->clone(), indexer );1269 Type * toType = resolveTypeof( initAlt.type, indexer ); 1271 1270 SymTab::validateType( toType, &indexer ); 1272 1271 adjustExprType( toType, env, indexer );
Note:
See TracChangeset
for help on using the changeset viewer.