Fariborz Jahanian
028b9e1d0a
objc/c++: Issue diagnostic when free-standing ivar is accessed
...
in class method instead of crash. // rdar://10593227
llvm-svn: 146998
2011-12-20 22:21:08 +00:00
Ted Kremenek
dd5d0dc4f4
Refine error diagnostic for using bridged casts when not using ARC.
...
llvm-svn: 146938
2011-12-20 01:03:40 +00:00
Fariborz Jahanian
f9aca2089e
objc-arc: bridge casts in non-arc mode are now
...
error. // rdar://10597832
llvm-svn: 146918
2011-12-19 22:52:53 +00:00
Fariborz Jahanian
103ae5c48f
objc-arc: bridge casts in non-objc-arc mode are ignord.
...
But, warn too. // rdar://10597832
llvm-svn: 146904
2011-12-19 21:06:15 +00:00
Fariborz Jahanian
21c2484454
objc: after issuing the warning on direct use of __attribute__((NSObject))
...
on properties, prevent consequential error diagnostics. // rdar://10591336
llvm-svn: 146737
2011-12-16 15:54:29 +00:00
Douglas Gregor
ab1ec82e04
Fix chaining of ObjCInterfaceDecl redeclarations
...
llvm-svn: 146722
2011-12-16 03:12:41 +00:00
Douglas Gregor
dc9166c8e1
Keep track of all declarations of an Objective-C class (both forward
...
declarations and definitions) as ObjCInterfaceDecls within the same
redeclaration chain. This new representation matches what we do for
C/C++ variables/functions/classes/templates/etc., and makes it
possible to answer the query "where are all of the declarations of
this class?"
llvm-svn: 146679
2011-12-15 20:29:51 +00:00
Fariborz Jahanian
9e49b6a6ff
objc: do not auto synthesize properties declared in
...
protocols; with a warning. // rdar://10567333
llvm-svn: 146626
2011-12-15 01:03:18 +00:00
Douglas Gregor
95715f9ecf
In debugger support mode, if we have a top-level message send
...
expression with an unknown result type, assume that the result type is
'id'. Fixes <rdar://problem/10400663>.
llvm-svn: 146622
2011-12-15 00:53:32 +00:00
Richard Trieu
553b2b2e5d
Modify how the -verify flag works. Currently, the verification string and
...
diagnostic message are compared. If either is a substring of the other, then
no error is given. This gives rise to an unexpected case:
// expect-error{{candidate function has different number of parameters}}
will match the following error messages from Clang:
candidate function has different number of parameters (expected 1 but has 2)
candidate function has different number of parameters
It will also match these other error messages:
candidate function
function has different number of parameters
number of parameters
This patch will change so that the verification string must be a substring of
the diagnostic message before accepting. Also, all the failing tests from this
change have been corrected. Some stats from this cleanup:
87 - removed extra spaces around verification strings
70 - wording updates to diagnostics
40 - extra leading or trailing characters (typos, unmatched parens or quotes)
35 - diagnostic level was included (error:, warning:, or note:)
18 - flag name put in the warning (-Wprotocol)
llvm-svn: 146619
2011-12-15 00:38:15 +00:00
Fariborz Jahanian
c17c86b56c
objc: diagnose duplicate declaration of methods
...
in classes. // rdar://10535349
llvm-svn: 146504
2011-12-13 19:40:34 +00:00
Fariborz Jahanian
b989e6e50a
objc-arc: better diagnostic when block is declared
...
inside a struct/union.
llvm-svn: 146444
2011-12-12 23:17:04 +00:00
Fariborz Jahanian
e283346d0b
objc-arc: diagnose synthesis of a 'weak unavailable' property.
...
// rdar://10535245
llvm-svn: 146272
2011-12-09 19:55:11 +00:00
Fariborz Jahanian
6bdeb14d5d
objc: issue deprecated/unavailable diagnostic when
...
methods with these attributes are sent to receivers
of 'id' type too. // rdar://10459930
llvm-svn: 145999
2011-12-07 00:30:00 +00:00
Erik Verbruggen
c6c8d9356d
Extend warnings for missing '@end'.
...
Fixes PR2709.
llvm-svn: 145928
2011-12-06 09:25:23 +00:00
Fariborz Jahanian
56f326e7f2
objc: put out more coherent warning when method definition
...
attributes don't match its declaration. // rdar://10529259.
llvm-svn: 145872
2011-12-06 00:02:41 +00:00
Douglas Gregor
11bb308457
When typo-correction an Objective-C superclass name, don't
...
typo-correct to ourselves.
llvm-svn: 145583
2011-12-01 15:37:53 +00:00
Douglas Gregor
d8fb1e30eb
When sending a message to a receiver that has "unknown any" type,
...
force the unknown any type to "id" so that the message send can be
completed without requiring a case. Fixes <rdar://problem/10506646>.
llvm-svn: 145552
2011-12-01 01:37:36 +00:00
Ted Kremenek
764d63ad94
Specially whitelist the selector 'addOperationWithBlock:' for the retain-cycle checking in -Warc-retain-cycles. This commonly
...
is hit by users using NSOperationQueue. Fixes <rdar://problem/10465721>.
llvm-svn: 145548
2011-12-01 00:59:21 +00:00
Fariborz Jahanian
a45495a9f2
objc: warn if NSObject attribute appears other than in a typedef.
...
// rdar://10453342
llvm-svn: 145358
2011-11-29 01:48:40 +00:00
Fariborz Jahanian
22b405c7aa
objc: turn warning for property type mismatch in
...
primary and its continuation class into error.
// rdar://10142679
llvm-svn: 145255
2011-11-28 18:38:27 +00:00
Douglas Gregor
4123a86fae
Use Sema::RequireCompleteType to check for the completeness of
...
Objective-C classes. This has two purposes: to consistently provide
"forward declaration here" notes when we hit an incomplete type, and
to give LLDB a chance to complete the type.
RequireCompleteType bits from Sean Callanan!
llvm-svn: 144573
2011-11-14 22:10:01 +00:00
Argyrios Kyrtzidis
95dfc12cd6
Don't crash when a duplicate interface/protocol is inside an extern "C" context.
...
llvm-svn: 144508
2011-11-13 22:08:30 +00:00
Argyrios Kyrtzidis
3a8de5b560
Don't crash on invalid objc code.
...
llvm-svn: 144150
2011-11-09 00:22:48 +00:00
Fariborz Jahanian
557fc9a99d
objc: Don't crash on missing @interface decl.
...
// rdar://10415026
llvm-svn: 144143
2011-11-08 22:51:27 +00:00
Fariborz Jahanian
b1ac0813a6
objc-arc: 'readonly' property of retainable object
...
type is strong by default too. // rdar://10410903
llvm-svn: 144118
2011-11-08 20:58:53 +00:00
John McCall
cfef546d40
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
2011-11-07 22:49:50 +00:00
Argyrios Kyrtzidis
fed29142ba
When applying ARC __weak to a non-objc pointer, do not give error that
...
__weak is unsupported by the deployment target, since it is going to be
ignored anyway.
Makes it easier for incremental migration from GC.
llvm-svn: 143975
2011-11-07 18:40:21 +00:00
Fariborz Jahanian
37c6417949
objc: fixed enum type is supported in objc mode.
...
Fixes a bug where enumerator type is not this
fixed type. // rdar://10381507
llvm-svn: 143724
2011-11-04 18:51:24 +00:00
Fariborz Jahanian
3018b95093
objc: warn if a readonly property has a setter attribute too.
...
// rdar://10357768
llvm-svn: 143518
2011-11-01 23:02:16 +00:00
Ted Kremenek
5d6044e413
Downgrade err_iboutlet_object_type to a warning. It was breaking a bunch of code. We will reconsider promoting it back to an error later.
...
llvm-svn: 143470
2011-11-01 18:08:35 +00:00
Fariborz Jahanian
d01ddd1d07
Improve text of a diagnostic.
...
llvm-svn: 143353
2011-10-31 17:27:06 +00:00
Fariborz Jahanian
244b187d22
objc-arc: desugar certain type and improve on diagnostic for
...
ownership qualifier cast which won't work.
// rdar://10244607
llvm-svn: 143258
2011-10-29 00:06:10 +00:00
Argyrios Kyrtzidis
729387327b
[ARC] Do not transfer ARC ownership if the cast is going to result in r-value,
...
in which case the ownership is redundant. Thanks to John for the suggestion.
llvm-svn: 143240
2011-10-28 22:54:28 +00:00
Fariborz Jahanian
2fa646d596
objective-c arc: type-casting of an objc pointer to
...
an rvalue retainable object type with life-time qualifier has no
effect and wil be diagnosed as error. // rdar://10244607
llvm-svn: 143219
2011-10-28 20:06:07 +00:00
Argyrios Kyrtzidis
a9aabf7d51
Fix crash on an @interface nested inside @implementation, rdar://10336158
...
llvm-svn: 143085
2011-10-27 00:09:34 +00:00
John McCall
526ab47a55
Restore r142914 and r142915, now with missing file and apparent
...
GCC compiler workaround.
llvm-svn: 142931
2011-10-25 17:37:35 +00:00
NAKAMURA Takumi
9a8f13961c
Revert r142914 and r142915, due to possibly missing file.
...
r142914: "Introduce a placeholder type for "pseudo object""
r142915: "Pull the pseudo-object stuff into its own file."
llvm-svn: 142921
2011-10-25 14:32:25 +00:00
John McCall
c4a2d3259f
Introduce a placeholder type for "pseudo object"
...
expressions: expressions which refer to a logical rather
than a physical l-value, where the logical object is
actually accessed via custom getter/setter code.
A subsequent patch will generalize the AST for these
so that arbitrary "implementing" sub-expressions can
be provided.
Right now the only client is ObjC properties, but
this should be generalizable to similar language
features, e.g. Managed C++'s __property methods.
llvm-svn: 142914
2011-10-25 07:27:56 +00:00
Ted Kremenek
7b2fbc61de
Relax restriction of assigning to 'self' in ARC when a method is attributed with ns_consumes_self. Fixes <rdar://problem/10274056>.
...
llvm-svn: 142909
2011-10-25 04:52:20 +00:00
Fariborz Jahanian
e96f9c816b
Fixes a minor hick up to my last patch.
...
llvm-svn: 142711
2011-10-22 01:56:45 +00:00
Fariborz Jahanian
512a4cc967
objc: private methods can have their attributes, no diagnostic is required.
...
None private methods if their implementation have attribute, they must exactly
match those in their declarations. // rdar://10271563
llvm-svn: 142709
2011-10-22 01:21:15 +00:00
Fariborz Jahanian
2512747959
objective-c: Diagnose redeclaration of private
...
ivars in class extensions. // rdar://10309454
llvm-svn: 142664
2011-10-21 18:03:52 +00:00
Fariborz Jahanian
7f73302b4f
objc: allow class name qualified with protocols in
...
iboutletcollection attribute. But ignore protocol
list. // rdar://10296078
llvm-svn: 142459
2011-10-18 23:13:50 +00:00
John McCall
91aee685d8
Add a __has_feature check for arc_cf_code_audited.
...
llvm-svn: 142423
2011-10-18 21:18:53 +00:00
Fariborz Jahanian
2f31b33f34
objc: more changes in use of IBOutletCollection attribute.
...
'Class' is disallowed as argument. If the argument is missing,
NSObject is assumed. // rdar://10296078
llvm-svn: 142409
2011-10-18 19:54:31 +00:00
Fariborz Jahanian
6b70865ec0
objc: diagnose invalid argument to an
...
iboutletcollection attribute intead of crashing.
// rdar://10296078
llvm-svn: 142364
2011-10-18 17:11:10 +00:00
John McCall
95ff270ee9
Fix several bugs with #pragma clang arc_cf_code_audited and macros.
...
llvm-svn: 142324
2011-10-18 00:44:04 +00:00
John McCall
4124c4924d
Teach the ARC compiler to not require __bridge casts when
...
passing/receiving CF objects at +0 to/from Objective-C methods
or audited C functions.
llvm-svn: 142219
2011-10-17 18:40:02 +00:00
Fariborz Jahanian
c27cd1b881
Avoid duplicate unavailbility diagnostics in objc++.
...
// rdar://10268422
llvm-svn: 142078
2011-10-15 19:18:36 +00:00