forked from qt-creator/qt-creator
Fixed the objc auto tests
This commit is contained in:
@@ -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;
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user