Opened 6 years ago
#108 new defect
tuple overloading problem
Reported by: | pabuhr | Owned by: | |
---|---|---|---|
Priority: | minor | Component: | cfa-cc |
Version: | 1.0 | Keywords: | |
Cc: |
Description
void fred( int i1, int i2 ); int fred( int i1, int i2 ); [int, int] fred( int i1, int i2 ) {} int main() { int i; [i, i] = fred( 4, 5 ); }
cfa-cpp: Tuples/TupleAssignment.cc:300: ObjectDecl* Tuples::TupleAssignSpotter::Matcher::newObject(UniqueName&, Expression*): Assertion `expr->result && ! expr->get_result()->isVoid()' failed. Stack back trace for: /u0/pabuhr/software/cfa-cc/lib/cfa/cfa-cpp (0) /lib/x86_64-linux-gnu/libc.so.6 : (/*unknown*/)+0x2dc82 [0x7f2e2b823c82] (1) /u0/pabuhr/software/cfa-cc/lib/cfa/cfa-cpp : Tuples::TupleAssignSpotter::Matcher::newObject(UniqueName&, Expression*)+0x261 [0xec2311] (2) /u0/pabuhr/software/cfa-cc/lib/cfa/cfa-cpp : Tuples::TupleAssignSpotter::MassAssignMatcher::match(std::__cxx11::list<Expression*, std::allocator<Expression*> >&)+0x204 [0xec2544] (3) /u0/pabuhr/software/cfa-cc/lib/cfa/cfa-cpp : Tuples::TupleAssignSpotter::match()+0x57 [0xec18c7] (4) /u0/pabuhr/software/cfa-cc/lib/cfa/cfa-cpp : Tuples::TupleAssignSpotter::spot(UntypedExpr*, std::vector<ResolvExpr::AlternativeFinder, std::allocator<ResolvExpr::AlternativeFinder> >&)+0x308 [0xec2e28] (5) /u0/pabuhr/software/cfa-cc/lib/cfa/cfa-cpp : Tuples::handleTupleAssignment(ResolvExpr::AlternativeFinder&, UntypedExpr*, std::vector<ResolvExpr::AlternativeFinder, std::allocator<ResolvExpr::AlternativeFinder> >&)+0x42 [0xec3242] (6) /u0/pabuhr/software/cfa-cc/lib/cfa/cfa-cpp : ResolvExpr::AlternativeFinder::Finder::postvisit(UntypedExpr*)+0xfd [0xb9cb1d] (7) /u0/pabuhr/software/cfa-cc/lib/cfa/cfa-cpp : PassVisitor<ResolvExpr::AlternativeFinder::Finder>::visit(UntypedExpr*)+0xfa [0xbbafda] (8) /u0/pabuhr/software/cfa-cc/lib/cfa/cfa-cpp : ResolvExpr::AlternativeFinder::find(Expression*, bool, bool, bool)+0xb1 [0xb9a561] (9) /u0/pabuhr/software/cfa-cc/lib/cfa/cfa-cpp : ResolvExpr::AlternativeFinder::Finder::postvisit(CastExpr*)+0xd3 [0xb9da03] (10) /u0/pabuhr/software/cfa-cc/lib/cfa/cfa-cpp : PassVisitor<ResolvExpr::AlternativeFinder::Finder>::visit(CastExpr*)+0xb5 [0xbbb105] (11) /u0/pabuhr/software/cfa-cc/lib/cfa/cfa-cpp : ResolvExpr::AlternativeFinder::find(Expression*, bool, bool, bool)+0xb1 [0xb9a561] (12) /u0/pabuhr/software/cfa-cc/lib/cfa/cfa-cpp() [0xc68ac5] (13) /u0/pabuhr/software/cfa-cc/lib/cfa/cfa-cpp : ResolvExpr::resolveInVoidContext(Expression*, SymTab::Indexer const&, ResolvExpr::TypeEnvironment&)+0xe0 [0xc69040] (14) /u0/pabuhr/software/cfa-cc/lib/cfa/cfa-cpp : ResolvExpr::findVoidExpression(Expression*&, SymTab::Indexer const&)+0x4a [0xc692da] (15) /u0/pabuhr/software/cfa-cc/lib/cfa/cfa-cpp : PassVisitor<ResolvExpr::Resolver>::visit(ExprStmt*)+0x53 [0xca4173] (16) /u0/pabuhr/software/cfa-cc/lib/cfa/cfa-cpp : void PassVisitor<ResolvExpr::Resolver>::handleStatementList<PassVisitor<ResolvExpr::Resolver>::visitStatementList(std::__cxx11::list<Statement*, std::allocator<Statement*> >&)::{lambda(Statement*)#1}>(std::__cxx11::list<Statement*, std::allocator<Statement*> >&, PassVisitor<ResolvExpr::Resolver>::visitStatementList(std::__cxx11::list<Statement*, std::allocator<Statement*> >&)::{lambda(Statement*)#1})+0x18b [0xca774b] (17) /u0/pabuhr/software/cfa-cc/lib/cfa/cfa-cpp : PassVisitor<ResolvExpr::Resolver>::visit(CompoundStmt*)+0x69 [0xca7b09] (18) /u0/pabuhr/software/cfa-cc/lib/cfa/cfa-cpp : PassVisitor<ResolvExpr::Resolver>::visit(FunctionDecl*)+0x1a1 [0xca7d61] (19) /u0/pabuhr/software/cfa-cc/lib/cfa/cfa-cpp : ResolvExpr::resolve(std::__cxx11::list<Declaration*, std::allocator<Declaration*> >)+0x121 [0xc8c621] (20) /u0/pabuhr/software/cfa-cc/lib/cfa/cfa-cpp : main(/*unknown*/)+0x687 [0x71f817]
Note: See
TracTickets for help on using
tickets.