From d21de8c621c4bdbc25fa662de58a77704953edba Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Fri, 13 Aug 2010 16:52:59 +0200 Subject: [PATCH] Fixed the objc auto tests --- src/shared/cplusplus/Bind.cpp | 12 +++++++++--- tests/auto/cplusplus/lookup/tst_lookup.cpp | 12 +++++++++--- tests/auto/cplusplus/semantic/tst_semantic.cpp | 2 +- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/shared/cplusplus/Bind.cpp b/src/shared/cplusplus/Bind.cpp index 436f68ebc19..9b5fe050eca 100644 --- a/src/shared/cplusplus/Bind.cpp +++ b/src/shared/cplusplus/Bind.cpp @@ -953,7 +953,6 @@ ObjCMethod *Bind::objCMethodPrototype(ObjCMethodPrototypeAST *ast) if (isObjCClassMethod(tokenKind(ast->method_type_token))) method->setStorage(Symbol::Static); method->setVisibility(_objcVisibility); - _scope->addMember(method); ast->symbol = method; Scope *previousScope = switchScope(method); @@ -969,7 +968,7 @@ ObjCMethod *Bind::objCMethodPrototype(ObjCMethodPrototypeAST *ast) for (SpecifierListAST *it = ast->attribute_list; it; it = it->next) { specifiers = this->specifier(it->value, specifiers); } - setDeclSpecifiers(method, specifiers); + //setDeclSpecifiers(method, specifiers); return method; } @@ -2285,10 +2284,17 @@ bool Bind::visit(ObjCMethodDeclarationAST *ast) { ObjCMethod *method = this->objCMethodPrototype(ast->method_prototype); - if (! _skipFunctionBodies && ast->function_body) { + if (! ast->function_body) { + const Name *name = method->name(); + unsigned sourceLocation = ast->firstToken(); + Declaration *decl = control()->newDeclaration(sourceLocation, name); + decl->setType(method); + _scope->addMember(decl); + } else if (! _skipFunctionBodies && ast->function_body) { Scope *previousScope = switchScope(method); this->statement(ast->function_body); (void) switchScope(previousScope); + _scope->addMember(method); } return false; diff --git a/tests/auto/cplusplus/lookup/tst_lookup.cpp b/tests/auto/cplusplus/lookup/tst_lookup.cpp index 1194600f18d..a05c610199d 100644 --- a/tests/auto/cplusplus/lookup/tst_lookup.cpp +++ b/tests/auto/cplusplus/lookup/tst_lookup.cpp @@ -334,19 +334,25 @@ void tst_Lookup::iface_impl_scoping() QCOMPARE(method1Impl->identifier()->chars(), "method1"); // get the body of method1 - QCOMPARE(method1Impl->memberCount(), 1U); - Block *method1Body = method1Impl->memberAt(0)->asBlock(); + QCOMPARE(method1Impl->memberCount(), 2U); + Argument *method1Arg = method1Impl->memberAt(0)->asArgument(); + QVERIFY(method1Arg); + QCOMPARE(method1Arg->identifier()->chars(), "arg"); + QVERIFY(method1Arg->type()->isIntegerType()); + + Block *method1Body = method1Impl->memberAt(1)->asBlock(); QVERIFY(method1Body); const LookupContext context(doc, snapshot); { // verify if we can resolve "arg" in the body - QCOMPARE(method1Impl->argumentCount(), 1U); + QCOMPARE(method1Impl->argumentCount(), 2U); Argument *arg = method1Impl->argumentAt(0)->asArgument(); QVERIFY(arg); QVERIFY(arg->name()); QVERIFY(arg->name()->identifier()); QCOMPARE(arg->name()->identifier()->chars(), "arg"); + QVERIFY(arg->type()->isIntegerType()); const QList<LookupItem> candidates = context.lookup(arg->name(), method1Body->scope()); QCOMPARE(candidates.size(), 1); diff --git a/tests/auto/cplusplus/semantic/tst_semantic.cpp b/tests/auto/cplusplus/semantic/tst_semantic.cpp index 52541b168c8..b11f8ca6341 100644 --- a/tests/auto/cplusplus/semantic/tst_semantic.cpp +++ b/tests/auto/cplusplus/semantic/tst_semantic.cpp @@ -565,7 +565,7 @@ void tst_Semantic::objcSelector_1() { QSharedPointer<Document> doc = document("\n" "@interface A {}\n" - "-(void)a:(int)a b:(int)b c:(int)c;\n" + "-(void) a:(int)a b:(int)b c:(int)c;\n" "@end\n", true); -- GitLab