TopDUContext* DUChainTestBase::parseAdditionalFile(const IndexedString& fileName, const QByteArray& contents) { ParseSession session; session.setContents(contents); StartAst* ast = nullptr; if (!session.parse(&ast)) qFatal("can't parse"); EditorIntegrator editor(&session); session.setCurrentDocument(fileName); DeclarationBuilder declarationBuilder(&editor); TopDUContext* top = declarationBuilder.build(fileName, ast); if ( fileName != internalFunctionFile() ) { UseBuilder useBuilder(&editor); useBuilder.buildUses(ast); } if (!session.problems().isEmpty()) { DUChainWriteLocker lock; foreach( const ProblemPointer& p, session.problems() ) { top->addProblem(p); } }