From cfef546d40ca0515c3240bdaeb950251cc147421 Mon Sep 17 00:00:00 2001 From: John McCall Date: Mon, 7 Nov 2011 22:49:50 +0000 Subject: There are some crazy cases that LookupMethodInReceiverType doesn't duplicate, but they all surface as implicit properties. It's also a useful optimization to not duplicate the implicit getter lookup. So, trust the getter lookup that was already done in these cases. llvm-svn: 144031 --- clang/lib/Sema/SemaPseudoObject.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'clang/lib/Sema/SemaPseudoObject.cpp') diff --git a/clang/lib/Sema/SemaPseudoObject.cpp b/clang/lib/Sema/SemaPseudoObject.cpp index b3ed145b155..cf43fcad055 100644 --- a/clang/lib/Sema/SemaPseudoObject.cpp +++ b/clang/lib/Sema/SemaPseudoObject.cpp @@ -418,7 +418,14 @@ static ObjCMethodDecl *LookupMethodInReceiverType(Sema &S, Selector sel, bool ObjCPropertyOpBuilder::findGetter() { if (Getter) return true; - Getter = LookupMethodInReceiverType(S, RefExpr->getGetterSelector(), RefExpr); + // For implicit properties, just trust the lookup we already did. + if (RefExpr->isImplicitProperty()) { + Getter = RefExpr->getImplicitPropertyGetter(); + return (Getter != 0); + } + + ObjCPropertyDecl *prop = RefExpr->getExplicitProperty(); + Getter = LookupMethodInReceiverType(S, prop->getGetterName(), RefExpr); return (Getter != 0); } -- cgit v1.2.3