Fix to selector parameter position.

This commit is contained in:
Erik Verbruggen
2009-12-29 18:26:01 +01:00
parent 5723682b21
commit eb1baa9e2e
3 changed files with 10 additions and 9 deletions

View File

@@ -666,22 +666,22 @@ bool CheckDeclaration::visit(ObjCMethodDeclarationAST *ast)
return false;
FullySpecifiedType ty = semantic()->check(ast->method_prototype, _scope);
ObjCMethod *methodType = ty.type()->asObjCMethodType();
if (!methodType)
ObjCMethod *methodTy = ty.type()->asObjCMethodType();
if (!methodTy)
return false;
Symbol *symbol;
if (ast->function_body) {
if (!semantic()->skipFunctionBodies()) {
semantic()->check(ast->function_body, methodType->members());
semantic()->check(ast->function_body, methodTy->members());
}
symbol = methodType;
symbol = methodTy;
} else {
Declaration *decl = control()->newDeclaration(ast->firstToken(), methodType->name());
decl->setType(methodType);
Declaration *decl = control()->newDeclaration(ast->firstToken(), methodTy->name());
decl->setType(methodTy);
symbol = decl;
symbol->setStorage(methodType->storage());
symbol->setStorage(methodTy->storage());
}
symbol->setStartOffset(tokenAt(ast->firstToken()).offset);

View File

@@ -97,10 +97,11 @@ FullySpecifiedType CheckDeclarator::check(PtrOperatorListAST *ptrOperators,
FullySpecifiedType CheckDeclarator::check(ObjCMethodPrototypeAST *methodPrototype,
Scope *scope)
{
FullySpecifiedType previousType = switchFullySpecifiedType(FullySpecifiedType());
Scope *previousScope = switchScope(scope);
accept(methodPrototype);
(void) switchScope(previousScope);
return _fullySpecifiedType;
return switchFullySpecifiedType(previousType);
}
DeclaratorAST *CheckDeclarator::switchDeclarator(DeclaratorAST *declarator)

View File

@@ -423,7 +423,7 @@ bool CheckName::visit(ObjCMessageArgumentDeclarationAST *ast)
_name = control()->nameId(id);
ast->name = _name;
Argument *arg = control()->newArgument(ast->firstToken(), _name);
Argument *arg = control()->newArgument(ast->param_name_token, _name);
ast->argument = arg;
arg->setType(type);
arg->setInitializer(0);