aboutsummaryrefslogtreecommitdiff
path: root/test/SemaObjC
AgeCommit message (Collapse)Author
2010-12-15ivars craeted for explicit @synthesize and thoseFariborz Jahanian
created for auto-synthesis are @private. Fixes: // rdar://8769582 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121913 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-11Enhance my implementation of //rdar ://8747333 in r121597 to allowFariborz Jahanian
for declaration of property setter/getter in forward class extensions and also skip over propeties which are @dynamic. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121617 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10Any property declared in a class extension might have userFariborz Jahanian
declared setter or getter in current class extension or one of the other class extensions. Mark them as synthesized as property will be synthesized when property with same name is seen in the @implementation. This prevents bogus warning about unimplemented methods to be issued for these methods. Fixes // rdar://8747333 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121597 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-10Added remaining objective-c library builtins (as in gcc) toFariborz Jahanian
clang. // rdar://8735023 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121441 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-03Diagnose when accessing property in a class method andFariborz Jahanian
no property accessor class method to be found, instead of crashing in IRGen. // rdar://8703553 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120855 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-02Improve on objc diagnostics. // rdar://8721692Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120737 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-01When unknown method is sent to a receiver ofFariborz Jahanian
'Class' type, disgnostic should refere to a class method. Fixes // rdar://8592156 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120517 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-30Add objc_getClass as an objc builtin functionFariborz Jahanian
(// rdar://8592641). Also rename LANGUAGEID to LanguageID. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120437 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-17Warn if direct accessing synthesized ivar backing the property inFariborz Jahanian
nonofragile-abi2. Fixes //rdar://8673791 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@119543 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-10Check for duplicate declaration of a property in current andFariborz Jahanian
other class extensions. // rdar://7629420 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118689 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-10Propagate the deprecated and unavailable attributes from aJohn McCall
@property declaration to the autogenerated methods. I'm uncertain whether this should apply to attributes in general, but these are a reasonable core. Implements rdar://problem/8617301 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118676 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-09Restore patch reversed in r118475. FixesFariborz Jahanian
// rdar://8632525 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118634 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-09Remove this test for now.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118476 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-09Remove space from rdar URIs.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118474 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-08Provide a precise builtin declaration for objc_msgSendFariborz Jahanian
to avoid a bogus warning. Fixes //rdar: //8632525 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118451 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-01Restore patch for PR8453 which was undone in r117829Fariborz Jahanian
(was project bugs). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117951 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-30Revert r117678, "Qualified 'id' should implement all of static class ↵Daniel Dunbar
type's", it breaks things. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117829 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-29Improve diagnostics reporting of un-implementedFariborz Jahanian
methods in protocols when protocols are in system headers and thus ignored. //rdar: //8227199 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117739 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-29Qualified 'id' should implement all of static class type'sFariborz Jahanian
protocols, including those added to class, super class and categories; otherewise issue a warning. This fixes pr8453. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117678 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-28Implement the newest status quo for method override checking. The idea nowJohn McCall
is that we need more information to decide the exact conditions for whether one ObjCObjectPointer is an acceptable return/parameter override for another, so we're going to disable that entire class of warning for now. The "forward developement" warning category, -Wmethod-signatures, can receive unrestricted feature work, and when we're happy with how it acts, we'll turn it on by default. This is a pretty conservative change, and nobody's totally content with it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117524 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-26Pending further discussion, re-enable warnings for Objective CJohn McCall
covariant/contravariant overrides and implementations, but do so under control of a new flag (-Wno-objc-covariant-overrides, which yes does cover contravariance too). *At least* the covariance cases will probably be enabled by default shortly, but that's not totally uncontroversial. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117346 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-25Only warn for mismatched types in Objective-C methods when they are ↵David Chisnall
incompatible, not when they are simply different. Now we test whether the difference in types breaks the principle of substitutability, rather than whether they are different. A common idiom in Objective-C is to provide a definition of a method in a subclass that returns a more-specified version of an object than the superclass. This does not violate the principle of substitutability, because you can always use the object returned by the subclass anywhere that you could use the type returned by the superclass. It was, however, generating warnings with clang, leading people to believe that semantically correct code was incorrect and requiring less accurate type specification and explicit down-casts (neither of which is a good thing to encourage). This change ensures that any method definition has parameter and return types that make it accept anything that something conforming to the declaration may pass and return something that the caller will expect, but allows stricter definitions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117271 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-21Tweak diagnostics for redeclaration of a @property in a class extension ↵Ted Kremenek
where the redelcaration and original declaration have the 'readwrite' attribute. This is a common case, and we can issue a more lucid diagnostic. Fixes <rdar://problem/7629420>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117045 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-20Fix handling of property and ivar lookup in typo correction; the twoDouglas Gregor
kinds of lookup into Objective-C classes were tangled together, a situation that was compounded by automatically synthesized ivars. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116907 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-20Introduce a simple cache for unqualified typo corrections, so that weDouglas Gregor
don't repeatedly loop through identifiers, correcting the same typo'd identifier over and over again. We still bail out after 20 typo corrections, but this should help improve performance in the common case where we're typo-correcting because the user forgot to include a header. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116901 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-19Fixes a bug in ivar lookup in the new objc's defaultFariborz Jahanian
property synthesis mode, when dealing with legacy code. Fixes //rdar: //8565343. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116846 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-15When performing typo correction, keep track of whether the last lookupDouglas Gregor
we did was an acceptable lookup. If it is, then we can re-use that lookup result. If it isn't, we have to perform the lookup again. This is almost surely the cause behind the mysterious typo.m failures on some builders; we were getting the wrong lookup results returned. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116586 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-14When performing typo correction, look through the set of knownDouglas Gregor
identifiers to determine good typo-correction candidates. Once we've identified those candidates, we perform name lookup on each of them and the consider the results. This optimization makes typo correction > 2x faster on a benchmark example using a single typo (NSstring) in a tiny file that includes Cocoa.h from a precompiled header, since we are deserializing far less information now during typo correction. There is a semantic change here, which is interesting. The presence of a similarly-named entity that is not visible can now affect typo correction. This is both good (you won't get weird corrections if the thing you wanted isn't in scope) and bad (you won't get good corrections if there is a similarly-named-but-completely-unrelated thing). Time will tell whether it was a good choice or not. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116528 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-11This patch does a few things in the area of objective-cFariborz Jahanian
properties. 1. Generates the AST for lexical info. of accessing getter/setter methods using dot-syntax notation. This fixes //rdar: //8528170. 2. Modifes rewriter to handle the AST putout in 1. 3. Supportes in rewriter ObjCImplicitSetterGetter ASTs. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116237 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-08Rename test name.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116120 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-08Method implemented in class's implementation may implementFariborz Jahanian
one declared in class's extension and not one declared in class's superclass. This supresses a bogus warning on method type mismatch. Fixes //rdar: // 8530080 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116118 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-05Method declaration and its implementation must match in all their types.Fariborz Jahanian
Previously, compiler warned only if it was unsafe if types did not match. Fixes // rdar: //7933061 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@115683 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-27Patch to support transparent_union argumentsFariborz Jahanian
passed to nonnull attributed functions. Implements radar 6857843. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114917 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-27Issue warning for trivial cases of nonnull attributesFariborz Jahanian
(on functions with no pointer arguments) but only when the attribute has not been coming from a macro instantiation in a header file. Fixes first part of radar 6857843. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114860 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-19Revert r114316, -Wunused-value enabled by default was intended.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114318 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-19Make -Wunused-value off by default, matching GCC. Fixes rdar://7126194.Argyrios Kyrtzidis
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114316 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-17When we run into an error parsing or type-checking the left-hand sideDouglas Gregor
of a binary expression, continue on and parse the right-hand side of the binary expression anyway, but don't call the semantic actions to type-check. Previously, we would see the error and then, effectively, skip tokens until the end of the statement. The result should be more useful recovery, both in the normal case (we'll actually see errors beyond the first one in a statement), but it also helps code completion do a much better job, because we do "real" code completion on the right-hand side of an invalid binary expression rather than completing with the recovery completion. For example, given x = p->y if there is no variable named "x", we can still complete after the p-> as a member expression. Along the recovery path, we would have completed after the "->" as if we were in an expression context, which is mostly useless. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114225 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-17Diagnose use of incomplete type on method argument type ofFariborz Jahanian
method definitions instead of crashing in code gen. Fixes radar 8421082. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114223 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-17fix rdar://8445858 - __sync_* intrinsics erroneously reject ObjC pointersChris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@114209 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-09Relax __attribute_((nonnull)) checking to allow the attribute on functions ↵Ted Kremenek
with no pointer arguments. GCC doesn't warn in this case, and the attribute is trivially satisfied (and benign). Fixes <rdar://problem/8364828>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113464 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-08Test removed.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113428 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-08Fix a crash when overloading id with objc_object*.Fariborz Jahanian
Radar 8400356. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113397 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-05"const id<NSFoo> *" instead of "id<NSFoo> const *".Chris Lattner
I think this wraps up all the legal cases. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113096 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-05'const std::type_info*' instead of 'std::type_info const*'Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113092 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-05make clang print types as "const int *" instead of "int const*",Chris Lattner
which is should have done from the beginning. As usual, the most fun with this sort of change is updating all the testcases. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113090 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-01when emitting an error about a missing } in a compound statement, emitChris Lattner
a "to match this {" note, pointing out the opener. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112709 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-25Fix typo in error message and testcase.Eric Christopher
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112115 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-25No need to default synthesize property if implementation Fariborz Jahanian
has its own getter and setter methods declared. Fixed 8349319 (nonfragile-abi2). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112003 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-24Fix a bug in nonfragile-abi2 when attempting to diagnoseFariborz Jahanian
previous use of a synthesized 'ivar' with property of same name declared as @dynamic. In this case, 'ivar' is in the inherited class and no diagnostics should be issued. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111940 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-17Diagnose if type of iboutletcollection attribute is a builtin type.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111324 91177308-0d34-0410-b5e6-96231b3b80d8