diff --git a/clang/lib/Parse/ParseObjc.cpp b/clang/lib/Parse/ParseObjc.cpp index 4795a464f549..6a07503737b6 100644 --- a/clang/lib/Parse/ParseObjc.cpp +++ b/clang/lib/Parse/ParseObjc.cpp @@ -280,7 +280,7 @@ void Parser::ParseObjCInterfaceDeclList(DeclTy *interfaceDecl, // FIXME. This is not right! : FD.D.getIdentifier()); DeclTy *Property = Actions.ActOnProperty(CurScope, - DS.getSourceRange().getBegin(), FD, OCDS, + AtLoc, FD, OCDS, GetterSel, SetterSel, MethodImplKind); allProperties.push_back(Property); diff --git a/clang/lib/Sema/SemaDeclObjC.cpp b/clang/lib/Sema/SemaDeclObjC.cpp index a0fa6ecb2bc2..efef3fc1bee0 100644 --- a/clang/lib/Sema/SemaDeclObjC.cpp +++ b/clang/lib/Sema/SemaDeclObjC.cpp @@ -878,6 +878,10 @@ void Sema::ActOnAtEnd(SourceLocation AtEndLoc, DeclTy *classDecl, MergeProtocolPropertiesIntoClass(I, I); for (ObjCInterfaceDecl::classprop_iterator P = I->classprop_begin(), E = I->classprop_end(); P != E; ++P) { + // FIXME: It would be really nice if we could avoid this. Injecting + // methods into the interface makes it hard to distinguish "real" methods + // from synthesized "property" methods (that aren't in the source). + // This complicicates the rewriter's life. I->addPropertyMethods(Context, *P, insMethods); } I->addMethods(&insMethods[0], insMethods.size(),