From 41882862a2433b578d2edec3b5ecdb702f8c1dcc Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Tue, 18 May 2010 10:33:35 +0200 Subject: [PATCH] Compile. --- tests/auto/cplusplus/lookup/tst_lookup.cpp | 98 ++++++------------- .../auto/cplusplus/semantic/tst_semantic.cpp | 15 ++- tests/manual/cplusplus/main.cpp | 36 ------- 3 files changed, 38 insertions(+), 111 deletions(-) diff --git a/tests/auto/cplusplus/lookup/tst_lookup.cpp b/tests/auto/cplusplus/lookup/tst_lookup.cpp index 7e1ceda519c..d65fbf636de 100644 --- a/tests/auto/cplusplus/lookup/tst_lookup.cpp +++ b/tests/auto/cplusplus/lookup/tst_lookup.cpp @@ -85,21 +85,19 @@ void tst_Lookup::base_class_defined_1() Snapshot snapshot; snapshot.insert(doc); - Document::Ptr emptyDoc = Document::create("<empty>"); - Class *baseClass = doc->globalSymbolAt(0)->asClass(); QVERIFY(baseClass); Class *derivedClass = doc->globalSymbolAt(1)->asClass(); QVERIFY(derivedClass); - LookupContext ctx(derivedClass, emptyDoc, doc, snapshot); + const LookupContext ctx(doc, snapshot); - const QList<Symbol *> candidates = - ctx.resolveClass(derivedClass->baseClassAt(0)->name()); + ClassOrNamespace *klass = ctx.lookupType(derivedClass->baseClassAt(0)->name(), derivedClass->scope()); + QVERIFY(klass != 0); - QCOMPARE(candidates.size(), 1); - QCOMPARE(candidates.at(0), baseClass); + QCOMPARE(klass->symbols().size(), 1); + QCOMPARE(klass->symbols().first(), baseClass); TranslationUnit *unit = doc->translationUnit(); QVERIFY(unit != 0); @@ -136,8 +134,6 @@ void tst_Lookup::simple_class_1() Snapshot snapshot; snapshot.insert(doc); - Document::Ptr emptyDoc = Document::create("<empty>"); - ObjCClass *iface = doc->globalSymbolAt(0)->asObjCClass(); QVERIFY(iface); QVERIFY(iface->isInterface()); @@ -158,30 +154,24 @@ void tst_Lookup::simple_class_1() QVERIFY(deallocMethod->name() && deallocMethod->name()->identifier()); QCOMPARE(QLatin1String(deallocMethod->name()->identifier()->chars()), QLatin1String("dealloc")); - const LookupContext ctxt(impl, emptyDoc, doc, snapshot); + const LookupContext context(doc, snapshot); // check class resolving: - const QList<Symbol *> candidates = ctxt.resolveObjCClass(impl->name()); - QCOMPARE(candidates.size(), 2); - QVERIFY(candidates.contains(iface)); - QVERIFY(candidates.contains(impl)); - - // check scope expansion: - QList<Scope *> expandedScopes; - ctxt.expand(impl->members(), ctxt.visibleScopes(), &expandedScopes); - QCOMPARE(expandedScopes.size(), 2); - - const ResolveExpression resolver(ctxt); + ClassOrNamespace *klass = context.lookupType(impl->name(), impl->scope()); + QVERIFY(klass != 0); + QCOMPARE(klass->symbols().size(), 2); + QVERIFY(klass->symbols().contains(iface)); + QVERIFY(klass->symbols().contains(impl)); // check method resolving: - QList<LookupItem> results = resolver.resolveMember(allocMethod->name(), impl); + QList<Symbol *> results = context.lookup(allocMethod->name(), impl->scope()); QCOMPARE(results.size(), 2); - QVERIFY(results.at(0).lastVisibleSymbol() == allocMethod || results.at(1).lastVisibleSymbol() == allocMethod); - QVERIFY(results.at(0).lastVisibleSymbol()->asDeclaration() || results.at(1).lastVisibleSymbol()->asDeclaration()); + QCOMPARE(results.at(0), allocMethod); + QCOMPARE(results.at(1), allocMethod); - results = resolver.resolveMember(deallocMethod->name(), impl); + results = context.lookup(deallocMethod->name(), impl->scope()); QCOMPARE(results.size(), 1); - QCOMPARE(results.at(0).lastVisibleSymbol(), deallocMethod); + QCOMPARE(results.at(0), deallocMethod); } void tst_Lookup::class_with_baseclass() @@ -229,25 +219,19 @@ void tst_Lookup::class_with_baseclass() QVERIFY(baseMethod->name() && baseMethod->name()->identifier()); QCOMPARE(QLatin1String(baseMethod->name()->identifier()->chars()), QLatin1String("baseMethod")); - const LookupContext ctxt(zooImpl, emptyDoc, doc, snapshot); - - const QList<Symbol *> candidates = ctxt.resolveObjCClass(baseZoo->name()); - QCOMPARE(candidates.size(), 1); - QVERIFY(candidates.contains(baseZoo)); - - QList<Scope *> expandedScopes; - ctxt.expand(zooImpl->members(), ctxt.visibleScopes(), &expandedScopes); - QCOMPARE(expandedScopes.size(), 3); + const LookupContext context(doc, snapshot); - const ResolveExpression resolver(ctxt); + ClassOrNamespace *objClass = context.lookupType(baseZoo->name(), zooImpl->scope()); + QVERIFY(objClass != 0); + QVERIFY(objClass->symbols().contains(baseZoo)); - QList<LookupItem> results = resolver.resolveMember(baseDecl->name(), zooImpl); + QList<Symbol *> results = context.lookup(baseDecl->name(), zooImpl->scope()); QCOMPARE(results.size(), 1); - QCOMPARE(results.at(0).lastVisibleSymbol(), baseDecl); + QCOMPARE(results.at(0), baseDecl); - results = resolver.resolveMember(baseMethod->name(), zooImpl); + results = context.lookup(baseMethod->name(), zooImpl->scope()); QCOMPARE(results.size(), 1); - QCOMPARE(results.at(0).lastVisibleSymbol(), baseMethod); + QCOMPARE(results.at(0), baseMethod); } void tst_Lookup::class_with_protocol_with_protocol() @@ -269,8 +253,6 @@ void tst_Lookup::class_with_protocol_with_protocol() Snapshot snapshot; snapshot.insert(doc); - Document::Ptr emptyDoc = Document::create("<empty>"); - ObjCProtocol *P1 = doc->globalSymbolAt(0)->asObjCProtocol(); QVERIFY(P1); QCOMPARE(P1->memberCount(), 1U); @@ -289,29 +271,23 @@ void tst_Lookup::class_with_protocol_with_protocol() ObjCClass *zooImpl = doc->globalSymbolAt(3)->asObjCClass(); QVERIFY(zooImpl); - const LookupContext ctxt(zooImpl, emptyDoc, doc, snapshot); + const LookupContext context(doc, snapshot); { - const QList<Symbol *> candidates = ctxt.resolveObjCProtocol(P1->name()); + const QList<Symbol *> candidates = context.lookup(P1->name(), zooImpl->scope()); QCOMPARE(candidates.size(), 1); QVERIFY(candidates.contains(P1)); } { - const QList<Symbol *> candidates = ctxt.resolveObjCProtocol(P2->protocolAt(0)->name()); + const QList<Symbol *> candidates = context.lookup(P2->protocolAt(0)->name(), zooImpl->scope()); QCOMPARE(candidates.size(), 1); QVERIFY(candidates.contains(P1)); } - QList<Scope *> expandedScopes; - ctxt.expand(zooImpl->members(), ctxt.visibleScopes(), &expandedScopes); - QCOMPARE(expandedScopes.size(), 4); - - const ResolveExpression resolver(ctxt); - - QList<LookupItem> results = resolver.resolveMember(p1method->name(), zooImpl); + QList<Symbol *> results = context.lookup(p1method->name(), zooImpl->scope()); QCOMPARE(results.size(), 1); - QCOMPARE(results.at(0).lastVisibleSymbol(), p1method); + QCOMPARE(results.at(0), p1method); } void tst_Lookup::iface_impl_scoping() @@ -331,7 +307,6 @@ void tst_Lookup::iface_impl_scoping() Snapshot snapshot; snapshot.insert(doc); - Document::Ptr emptyDoc = Document::create("<empty>"); ObjCClass *iface = doc->globalSymbolAt(0)->asObjCClass(); QVERIFY(iface); QVERIFY(iface->isInterface()); @@ -351,7 +326,7 @@ void tst_Lookup::iface_impl_scoping() Block *method1Body = method1Impl->memberAt(0)->asBlock(); QVERIFY(method1Body); - const LookupContext ctxt(method1Body, emptyDoc, doc, snapshot); + const LookupContext context(doc, snapshot); { // verify if we can resolve "arg" in the body QCOMPARE(method1Impl->argumentCount(), 1U); @@ -361,7 +336,7 @@ void tst_Lookup::iface_impl_scoping() QVERIFY(arg->name()->identifier()); QCOMPARE(arg->name()->identifier()->chars(), "arg"); - const QList<Symbol *> candidates = ctxt.resolve(arg->name()); + const QList<Symbol *> candidates = context.lookup(arg->name(), method1Body->scope()); QCOMPARE(candidates.size(), 1); QVERIFY(candidates.at(0)->type()->asIntegerType()); } @@ -371,19 +346,10 @@ void tst_Lookup::iface_impl_scoping() QCOMPARE(method2->identifier()->chars(), "method2"); { // verify if we can resolve "method2" in the body - const QList<Symbol *> candidates = ctxt.resolve(method2->name()); + const QList<Symbol *> candidates = context.lookup(method2->name(), method1Body->scope()); QCOMPARE(candidates.size(), 1); QCOMPARE(candidates.at(0), method2); } - - { // now let's see if the resolver can do the same for method2 - const ResolveExpression resolver(ctxt); - - const QList<LookupItem> results = resolver.resolveMember(method2->name(), - impl); - QCOMPARE(results.size(), 1); - QCOMPARE(results.at(0).lastVisibleSymbol(), method2); - } } QTEST_APPLESS_MAIN(tst_Lookup) diff --git a/tests/auto/cplusplus/semantic/tst_semantic.cpp b/tests/auto/cplusplus/semantic/tst_semantic.cpp index 8823faf0c84..1fe9dc18394 100644 --- a/tests/auto/cplusplus/semantic/tst_semantic.cpp +++ b/tests/auto/cplusplus/semantic/tst_semantic.cpp @@ -426,26 +426,23 @@ void tst_Semantic::pointer_to_function_1() void tst_Semantic::template_instance_1() { - QSharedPointer<Document> doc = document("void append(const _Tp &value);"); + QSharedPointer<Document> doc = document("template <typename _Tp> class QList { void append(const _Tp &value); };"); QCOMPARE(doc->errorCount, 0U); QCOMPARE(doc->globals->symbolCount(), 1U); - Declaration *decl = doc->globals->symbolAt(0)->asDeclaration(); + Declaration *decl = doc->globals->symbolAt(0)->asClass()->memberAt(0)->asDeclaration(); QVERIFY(decl); - GenTemplateInstance::Substitution subst; - const Identifier *nameTp = control.findOrInsertIdentifier("_Tp"); - FullySpecifiedType intTy(control.integerType(IntegerType::Int)); - subst.append(qMakePair(nameTp, intTy)); + FullySpecifiedType templArgs[] = { control.integerType(IntegerType::Int) }; + const Name *templId = control.templateNameId(control.findOrInsertIdentifier("QList"), templArgs, 1); - GenTemplateInstance inst(&control, subst); - FullySpecifiedType genTy = inst(decl); + FullySpecifiedType genTy = GenTemplateInstance::instantiate(templId, decl, &control); Overview oo; oo.setShowReturnTypes(true); const QString genDecl = oo.prettyType(genTy); - QCOMPARE(genDecl, QString::fromLatin1("void(const int &)")); + QCOMPARE(genDecl, QString::fromLatin1("void (const int &)")); } void tst_Semantic::expression_under_cursor_1() diff --git a/tests/manual/cplusplus/main.cpp b/tests/manual/cplusplus/main.cpp index 0bb6dec6b38..2fbb4743281 100644 --- a/tests/manual/cplusplus/main.cpp +++ b/tests/manual/cplusplus/main.cpp @@ -55,39 +55,6 @@ using namespace CPlusPlus; -class ForEachNode: protected ASTVisitor -{ - Document::Ptr doc; - AST *pattern; - -public: - ForEachNode(Document::Ptr doc) - : ASTVisitor(doc->translationUnit()), - matcher() {} - - void operator()() { accept(doc->translationUnit()->ast()); } - -protected: - using ASTVisitor::visit; - - virtual bool preVisit(AST *ast) - { - ir.reset(); - IfStatementAST *pattern = ir.IfStatement(ir.SimpleName()); - - //CompoundStatementAST *pattern = ir.CompoundStatement(); - - if (ast->match(ast, pattern, &matcher)) - translationUnit()->warning(ast->firstToken(), "matched"); - - return true; - } - - - ASTPatternBuilder ir; - ASTMatcher matcher; -}; - int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); @@ -107,9 +74,6 @@ int main(int argc, char *argv[]) doc->control()->setDiagnosticClient(0); doc->setSource(source); doc->parse(); - - ForEachNode forEachNode(doc); - forEachNode(); } return EXIT_SUCCESS; -- GitLab