TIntermAggregate* ir_grow_declaration(TIntermTyped* declaration, TIntermSymbol *symbol, TIntermTyped *initializer, TParseContext& ctx) { TIntermTyped* added_decl = ir_add_declaration (symbol, initializer, symbol->getLine(), ctx); if (declaration->getAsDeclaration()) { TIntermAggregate* aggregate = ir_make_aggregate(declaration, declaration->getLine()); aggregate->setOperator(EOpSequence); declaration = aggregate; } assert (declaration->getAsAggregate()); TIntermAggregate* aggregate = ir_grow_aggregate(declaration, added_decl, added_decl->getLine(), EOpSequence); aggregate->setOperator(EOpSequence); return aggregate; }
TIntermDeclaration* ir_grow_declaration(TIntermDeclaration* declaration, TIntermSymbol *symbol, TIntermTyped *initializer, TInfoSink& infoSink) { TIntermTyped* added_decl = symbol; if (initializer) added_decl = ir_add_assign(EOpAssign, symbol, initializer, symbol->getLine(), infoSink); if (declaration->isSingleDeclaration()) { TIntermTyped* current = declaration->getDeclaration(); TIntermAggregate* aggregate = ir_make_aggregate(current, current->getLine()); aggregate->setOperator(EOpComma); declaration->getDeclaration() = aggregate; } TIntermAggregate* aggregate = ir_grow_aggregate(declaration->getDeclaration(), added_decl, added_decl->getLine()); aggregate->setOperator(EOpComma); declaration->getDeclaration() = aggregate; return declaration; }