Fariborz Jahanian
3bf0ded346
Patch to provide separate ASTs for multiple ObjC class extension
...
declarations (implements radar 7928731).
llvm-svn: 106597
2010-06-22 23:20:40 +00:00
Ted Kremenek
64c235e4c6
Extend format string type-checking to include '%p'. Fixes remaining cases PR 4468.
...
llvm-svn: 106151
2010-06-16 21:23:04 +00:00
Fariborz Jahanian
5981b04718
Clang missing warning about conflicting declaration vs. definition
...
for variable arguments list methods. (radar 8006060).
llvm-svn: 104407
2010-05-21 23:28:58 +00:00
Fariborz Jahanian
9f963c2488
Misc. fixes to bring Objetive-C++'s handling of
...
gc attributes to be inline with Objective-C
(for radar 7925141).
llvm-svn: 104084
2010-05-18 23:04:17 +00:00
Fariborz Jahanian
87b915a9bc
These test now run in objective-c++ mode we well.
...
llvm-svn: 104041
2010-05-18 18:24:06 +00:00
Douglas Gregor
3f324d569b
Diagnose unused exception parameters under a different warning group
...
(-Wunused-exception-parameter) than normal variables, since it's more
common to name and then ignore an exception parameter. This warning is
neither enabled by default nor by -Wall. Fixes <rdar://problem/7931045>.
llvm-svn: 102931
2010-05-03 18:51:14 +00:00
Douglas Gregor
50ec46d4af
Complain when we try to initialize an object of Objective-C class type
...
(which is ill-formed) with an initializer list. Also, change the
fallback from an assertion to a generic error message, which is far
friendlier. Fixes <rdar://problem/7730948>.
llvm-svn: 102930
2010-05-03 18:24:37 +00:00
Fariborz Jahanian
58f11d6245
Do not issue warning on unimplemented property in the class, if it
...
conforms to a protocol as one of its super classes does. This is because
conforming super class will implement the property. This implements
new warning rules for unimplemented properties (radar 7884086).
llvm-svn: 102919
2010-05-03 15:49:20 +00:00
Fariborz Jahanian
9e1a3af030
Properties cannot be synthesized by-dafult in
...
categories. Issue usual warnings instead of
confusing error message. Radar 7920807
llvm-svn: 102645
2010-04-29 17:52:18 +00:00
Chris Lattner
8f68b777e2
wordsmith an objc warning, rdar://7900756
...
llvm-svn: 102388
2010-04-26 21:44:01 +00:00
Douglas Gregor
f356419bf5
Refactor Objective-C @catch parameter checking by detangling it from
...
function-parameter checking and splitting it into the normal
ActOn*/Build* pair in Sema. We now use VarDecl to represent the @catch
parameter rather than the ill-fitting ParmVarDecl.
llvm-svn: 102347
2010-04-26 17:32:49 +00:00
Fariborz Jahanian
f9b52d5f63
Improve on my previous diagnostics: per Doug's comment.
...
llvm-svn: 102190
2010-04-23 17:52:02 +00:00
Fariborz Jahanian
e459686aac
Trying to improve on a diagnostics for properties.
...
llvm-svn: 102187
2010-04-23 17:22:07 +00:00
Anders Carlsson
58e24a8fd8
Change the 'declared at' diagnostic to say 'declared here'.
...
llvm-svn: 102163
2010-04-23 02:20:12 +00:00
Douglas Gregor
4f4946aaaa
Whenever we complain about a failed initialization of a function or
...
method parameter, provide a note pointing at the parameter itself so
the user does not have to manually look for the function/method being
called and match up parameters to arguments. For example, we now get:
t.c:4:5: warning: incompatible pointer types passing 'long *' to
parameter of
type 'int *' [-pedantic]
f(long_ptr);
^~~~~~~~
t.c:1:13: note: passing argument to parameter 'x' here
void f(int *x);
^
llvm-svn: 102038
2010-04-22 00:20:18 +00:00
Douglas Gregor
0c78ad9665
Rework the Parser-Sema interaction for Objective-C message
...
sends. Major changes include:
- Expanded the interface from two actions (ActOnInstanceMessage,
ActOnClassMessage), where ActOnClassMessage also handled sends to
"super" by checking whether the identifier was "super", to three
actions (ActOnInstanceMessage, ActOnClassMessage,
ActOnSuperMessage). Code completion has the same changes.
- The parser now resolves the type to which we are sending a class
message, so ActOnClassMessage now accepts a TypeTy* (rather than
an IdentifierInfo *). This opens the door to more interesting
types (for Objective-C++ support).
- Split ActOnInstanceMessage and ActOnClassMessage into parser
action functions (with their original names) and semantic
functions (BuildInstanceMessage and BuildClassMessage,
respectively). At present, this split is onyl used by
ActOnSuperMessage, which decides which kind of super message it
has and forwards to the appropriate Build*Message. In the future,
Build*Message will be used by template instantiation.
- Use getObjCMessageKind() within the disambiguation of Objective-C
message sends vs. array designators.
Two notes about substandard bits in this patch:
- There is some redundancy in the code in ParseObjCMessageExpr and
ParseInitializerWithPotentialDesignator; this will be addressed
shortly by centralizing the mapping from identifiers to type names
for the message receiver.
- There is some #if 0'd code that won't likely ever be used---it
handles the use of 'super' in methods whose class does not have a
superclass---but could be used to model GCC's behavior more
closely. This code will die in my next check-in, but I want it in
Subversion.
llvm-svn: 102021
2010-04-21 19:57:20 +00:00
Fariborz Jahanian
422cb21862
Improve on source location of diagnostic when default
...
property synthesis is using a super class ivar.
llvm-svn: 102011
2010-04-21 18:57:20 +00:00
Ted Kremenek
15a81e59ca
Fix crash on invalid code where a @throw statement is not followed by a ';'
...
llvm-svn: 101941
2010-04-20 21:21:51 +00:00
Fariborz Jahanian
877aaa9706
Patch to support transparent_union types on
...
objective-c methods. Fixes radar 7875968.
llvm-svn: 101935
2010-04-20 20:28:15 +00:00
Douglas Gregor
26380d493b
More tests for Objective-C-related name lookup weirdness. Yes, it's
...
weird; yes, it's what GCC does. Almost.
llvm-svn: 101803
2010-04-19 19:10:40 +00:00
Ted Kremenek
36712b2ac1
Allow the 'ibaction' attribute to be attached to method declarations (and not issue a warning).
...
llvm-svn: 101699
2010-04-18 04:59:38 +00:00
Anders Carlsson
7a4a25de1e
Improve the bit-field too wide error message.
...
llvm-svn: 101384
2010-04-15 18:47:32 +00:00
Fariborz Jahanian
b5795c01c4
Fix a -pedantic spurious warning involving @dynamic.
...
llvm-svn: 101284
2010-04-14 20:52:42 +00:00
Chris Lattner
5ff40fc7ab
tighten the check for cast of super to avoid rejecting valid code,
...
rdar://7853261
llvm-svn: 101048
2010-04-12 17:09:27 +00:00
Chris Lattner
08e774b7ef
fix rdar://7852959 - Use of super within a block is actually ok.
...
(aka, Fariborz was right ;-)
llvm-svn: 101046
2010-04-12 17:03:29 +00:00
Chris Lattner
3adb17d44f
fix a bug I noticed by inspection, correcting two reject-valid bugs.
...
llvm-svn: 101026
2010-04-12 06:36:00 +00:00
Chris Lattner
3ab8ca2894
fix a rejects-valid bug that I introduced, pointed out
...
by David Chisnall
llvm-svn: 101024
2010-04-12 06:27:57 +00:00
Chris Lattner
cd963185f0
fix a rejects-valid testcase involving super that I dreamt up.
...
This also fixes cases where super is used in a block in a
method which isn't valid.
llvm-svn: 101021
2010-04-12 06:20:33 +00:00
Chris Lattner
c2ebb03297
Have the parser decide whether a message to super is a variable or
...
type, instead of having sema do it.
llvm-svn: 101016
2010-04-12 05:38:43 +00:00
Chris Lattner
6033be79b3
avoid double negatives
...
llvm-svn: 100976
2010-04-11 18:53:08 +00:00
Chris Lattner
a36ec4243b
fix PR6811 by not parsing 'super' as a magic expression in
...
LookupInObjCMethod. Doing so allows all sorts of invalid code
to slip through to codegen. This patch does not change the
AST representation of super, though that would now be a natural
thing to do since it can only be in the receiver position and
in the base of a ObjCPropertyRefExpr.
There are still several ugly areas handling super in the parser,
but this is definitely a step in the right direction.
llvm-svn: 100959
2010-04-11 08:28:14 +00:00
Chris Lattner
00dcffded1
fix a problem causing us to lose the ''s around objc interface names
...
in a diagnostic.
llvm-svn: 100956
2010-04-11 07:04:01 +00:00
Douglas Gregor
b10646d4ce
Improve diagnostics like "initializing <type> from an expression of
...
type..." with "initializing <type> with an expression of type...",
which reads better. Thanks to John for the improved wording.
llvm-svn: 100873
2010-04-09 17:53:29 +00:00
Douglas Gregor
c68e140657
Improve diagnostics when we fail to convert from a source type to a
...
destination type for initialization, assignment, parameter-passing,
etc. The main issue fixed here is that we used rather confusing
wording for diagnostics such as
t.c:2:9: warning: initializing 'char const [2]' discards qualifiers,
expected 'char *' [-pedantic]
char *name = __func__;
^ ~~~~~~~~
We're not initializing a 'char const [2]', we're initializing a 'char
*' with an expression of type 'char const [2]'. Similar problems
existed for other diagnostics in this area, so I've normalized them all
with more precise descriptive text to say what we're
initializing/converting/assigning/etc. from and to. The warning for
the code above is now:
t.c:2:9: warning: initializing 'char *' from an expression of type
'char const [2]' discards qualifiers [-pedantic]
char *name = __func__;
^ ~~~~~~~~
Fixes <rdar://problem/7447179>.
llvm-svn: 100832
2010-04-09 00:35:39 +00:00
Douglas Gregor
f19ac0ede9
Downgrade the "declaration does not declare anything" error to a
...
warning. It's not harmful to have such pointless declarations, and GCC
does not diagnose this issue consistently.
llvm-svn: 100814
2010-04-08 21:33:23 +00:00
Ted Kremenek
5c7f596b4c
Match GCC's behavior and do not include '-Wunused-parameter' in '-Wunused'.
...
llvm-svn: 100810
2010-04-08 21:10:56 +00:00
Fariborz Jahanian
60462098d4
Patch to implement gcc's cstyle arguments in objc
...
methods. wip.
llvm-svn: 100734
2010-04-08 00:30:06 +00:00
Fariborz Jahanian
ea7a133775
Improve on diagnostics when an objc class is used as
...
a stand-alone type declaration.
llvm-svn: 100588
2010-04-07 00:22:00 +00:00
Fariborz Jahanian
b2c1aac544
default access for synthesize ivar is @protect.
...
Fixes radar 7823675.
llvm-svn: 100582
2010-04-06 23:36:17 +00:00
Fariborz Jahanian
6a0a2e0ccc
Patch to not build ivar ASTs when they are ilegally
...
declared in categories.
llvm-svn: 100577
2010-04-06 22:43:48 +00:00
Fariborz Jahanian
440a6832c5
Put type restriction on convesion to nonconforming 'id' back in
...
block pointer type comparison.
llvm-svn: 100533
2010-04-06 17:23:39 +00:00
Fariborz Jahanian
e16cdb407a
diagnose declaring class extension after its implementation
...
(radar 7822210).
llvm-svn: 100226
2010-04-02 20:53:05 +00:00
Fariborz Jahanian
a9f8675e02
Diagnose invalid code with -fobjc-nonfragile-abi2 when
...
property is being accessed without the dot-syntax notation.
(radar 7822344).
llvm-svn: 100212
2010-04-02 20:09:24 +00:00
Fariborz Jahanian
d603b54c55
Relax the typesafty rules of block pointers types which
...
take'id' or return 'id' in their type. Fixes radar 7814131.
llvm-svn: 100129
2010-04-01 19:50:22 +00:00
Fariborz Jahanian
c1fb862fda
Patch implements gcc's -Wno-protocol option to suppress warning
...
on unimplemented methods in protocols adopted by a class.
(radar 7056600).
llvm-svn: 100028
2010-03-31 18:23:33 +00:00
Fariborz Jahanian
df58603c26
Recognize __attribute__((NSObject)) directly applied
...
on retain properties. (radar 7809468).
llvm-svn: 99951
2010-03-30 22:40:11 +00:00
Fariborz Jahanian
5cab26d058
Add Support for 'warn_unused_result" attribute on
...
objective-c methods. (radar 7418262).
llvm-svn: 99903
2010-03-30 18:22:15 +00:00
Fariborz Jahanian
2e8074bfc3
Further improvement to point to category
...
whose protocolls methods needs implementation.
llvm-svn: 99730
2010-03-27 21:10:05 +00:00
Fariborz Jahanian
97752f7c95
Improve diagnostics on incomplete implementation
...
of objc classes; including which methods
need be implemented and where they come from.
WIP.
llvm-svn: 99724
2010-03-27 19:02:17 +00:00
Fariborz Jahanian
9b37b1d6bb
Allow conversion of qualified Class type to unqualified
...
Class type to match gcc's. Fixes radar 7789113.
llvm-svn: 99425
2010-03-24 21:00:27 +00:00
Fariborz Jahanian
c5b7bfc657
Improve diagnostics when ivar added to class
...
extension (radar 6812436).
llvm-svn: 99408
2010-03-24 18:08:23 +00:00
Ted Kremenek
5921b83f54
Improve diagnostic for @property/ivar type mismatch by including the types of the
...
ivar and @property respectively.
llvm-svn: 99312
2010-03-23 19:02:22 +00:00
Fariborz Jahanian
00c291b012
Set the relevent attributes declared in class extension
...
and fix a missing diagnostics on assigning to a read-only
property. Fixes radar 7766184.
llvm-svn: 99230
2010-03-22 23:25:52 +00:00
Fariborz Jahanian
cf711fb353
Diagnose miuse of property dot-syntax instead of crashing.
...
(radar 7634653).
llvm-svn: 99210
2010-03-22 21:02:34 +00:00
Fariborz Jahanian
a9effb55f3
Fixes access rues for ivars declared in class
...
implementations (radar 7547942).
llvm-svn: 99198
2010-03-22 19:04:14 +00:00
Rafael Espindola
568586ff22
Fix PR6618.
...
If a struct has an invalid field, mark it as invalid. Also avoid producing
errors about incomplete types that are invalid.
llvm-svn: 99150
2010-03-21 22:56:43 +00:00
Fariborz Jahanian
5140920a48
More coherent diagnostics when ivar is placed n categories.
...
(related to radar 7538989).
llvm-svn: 98993
2010-03-19 21:25:51 +00:00
Fariborz Jahanian
d5bb8cb348
Diagnose conversion of 'Class' to/from objective-c
...
object pointer types.
Fixes radar 7634850.
llvm-svn: 98970
2010-03-19 18:06:10 +00:00
Ted Kremenek
361ffd947c
Make PredefinedExpr::ComputeName() more robust to incorrect
...
code when we are printing the name of an Objective-C method
whose class has not been declared. Fixes <rdar://problem/7495713>.
llvm-svn: 98874
2010-03-18 21:23:08 +00:00
Fariborz Jahanian
8342e5776e
Some cleanup, change diagnostic when assigning to
...
a property which is not lvalue.
llvm-svn: 98848
2010-03-18 18:50:41 +00:00
Fariborz Jahanian
b8b0ea330c
objective-c patch to provide type safty when blocks are passing or
...
returning objc objects. There will be a corresponding objective-c++
patch soon.
llvm-svn: 98696
2010-03-17 00:20:01 +00:00
Ted Kremenek
e01bec9791
Add 'expected-note'
...
llvm-svn: 98560
2010-03-15 18:47:29 +00:00
Ted Kremenek
679708ee34
Correctly determine if the @property has been previously declared. If
...
a property has the same name as the ivar it wraps then the old logic
wouldn't find the previous property declaration.
llvm-svn: 98559
2010-03-15 18:47:25 +00:00
John McCall
c33dec3664
Add support for -Wwrite-strings. Patch by Mike M! Fixes PR 4804.
...
llvm-svn: 98541
2010-03-15 10:54:44 +00:00
Douglas Gregor
6cf3f3c75e
Statement expressions can be used in global- or namespace-scoped blocks
...
llvm-svn: 98135
2010-03-10 04:54:39 +00:00
Fariborz Jahanian
c4813e8d02
Don't error when a block pointer is passed to a
...
vararg functions/methods. Fixes radar 7725203.
llvm-svn: 98070
2010-03-09 18:34:52 +00:00
Ted Kremenek
a00c5db1a8
Augment __has_feature to report that Clang supports adding attribute 'unused'
...
to an Objective-C instance variable.
llvm-svn: 97850
2010-03-05 22:43:32 +00:00
Fariborz Jahanian
d2bccafe82
Patch to build qualifier on objective-c
...
pointer types. Fixes radar 7626768.
llvm-svn: 97847
2010-03-05 22:42:55 +00:00
Ted Kremenek
09597b461d
Fix crasher caused by setting a bit in a possibly empty bitvector while
...
doing printf format string checking. This is a recent regression.
llvm-svn: 97318
2010-02-27 08:34:51 +00:00
Fariborz Jahanian
8e3b9db27f
Forgot to include nested protocols in collection, resulting in
...
bogus warning. Fixes radar 7682116.
llvm-svn: 97157
2010-02-25 18:24:33 +00:00
Ted Kremenek
6bf658abef
Allow __attribute__((unused)) to be applied to ObjC ivars.
...
llvm-svn: 97103
2010-02-25 03:26:51 +00:00
Fariborz Jahanian
545643c309
More Sema check for ivars in class continuation.
...
llvm-svn: 97002
2010-02-23 23:41:11 +00:00
Ted Kremenek
514ff70d04
Fix another crash on invalid code. In this case, handle ObjC categories (with no names)
...
that refer to an undefined class.
llvm-svn: 96976
2010-02-23 19:39:46 +00:00
Fariborz Jahanian
404dc425bc
A test case for property synthesis using ivar in class extensions.
...
llvm-svn: 96968
2010-02-23 18:50:01 +00:00
Fariborz Jahanian
afe1386ed9
More support for ivars in class extension.
...
llvm-svn: 96850
2010-02-23 01:26:30 +00:00
Ted Kremenek
2fb89539f7
Clang really intends to reject attribute 'warn_unused_result' on Objective-C methods, but
...
instead it crashes on them. We might extend this attribute to work on methods, but for
now fix the crasher. Addresses <rdar://problem/7670939>.
llvm-svn: 96723
2010-02-21 05:15:32 +00:00
Fariborz Jahanian
34e3cef483
Start supporting declaration of ivars in @implementation
...
blocks. WIP.
llvm-svn: 96696
2010-02-19 20:58:54 +00:00
Fariborz Jahanian
c5d61df0a9
Issue extended diagnostic when property dot-syntax is used and
...
there is a setter but no getter (part of radar 7664555).
llvm-svn: 96687
2010-02-19 18:30:30 +00:00
Fariborz Jahanian
20912d644a
Allow for declaration and use of ivars in a stand-alone
...
implementation (toward radar 7547942).
llvm-svn: 96479
2010-02-17 17:00:07 +00:00
Fariborz Jahanian
30a42923d3
Class continuation now has its own property ast for
...
those declared in it. This is to allow duplicate
property diagnostics for properties declared in class extensions
multiple times (radar 7629420) and for future use.
llvm-svn: 96276
2010-02-15 21:55:26 +00:00
Fariborz Jahanian
dc68f9539c
Patch to fix a warning which exposed a bug in building
...
a qualified objective-c pointer type. Fixes radar 7638810.
(Also removes a FIXME).
llvm-svn: 96003
2010-02-12 19:27:33 +00:00
Fariborz Jahanian
13b9782cc0
Diagnose when user provided getter is being used as lvalue
...
using property dot-syntax. Fixes radar 7628953.
llvm-svn: 95838
2010-02-11 01:11:34 +00:00
Fariborz Jahanian
113b8ad7cf
Reverse a partial fix patch for radar 7214820. It broke some code and
...
I don't have time to refix it for now.
llvm-svn: 95733
2010-02-10 00:32:12 +00:00
Fariborz Jahanian
5db5281db8
Finish implementing property synthesis by default.
...
(radar 7381956).
llvm-svn: 95695
2010-02-09 21:49:50 +00:00
Fariborz Jahanian
04477f3de9
Merge block/function pointer types with objc's __weak
...
attribute properly and avoid bogus warning. This is
an objective-c fix only. objective-c++ follows different code
pass and requires separate fix (which will come at a later time).
Fixes radar 7214820.
llvm-svn: 95571
2010-02-08 21:09:39 +00:00
Ted Kremenek
2f2692f8ca
Rename -cc1 option '-checker-cfref' to '-analyzer-check-objc-mem'.
...
llvm-svn: 95348
2010-02-05 02:06:54 +00:00
Anders Carlsson
8345a07c25
Fix test.
...
llvm-svn: 95108
2010-02-02 19:09:34 +00:00
Ted Kremenek
b0fe9b9a40
Add test case for <rdar://problem/7068334> (which was fixed by r94864).
...
llvm-svn: 94865
2010-01-30 00:56:00 +00:00
Ted Kremenek
8d9842d43f
Switch Sema over to using the new implementation of format string
...
checking. It passes all existing tests, and the diagnostics have been
refined to provide better range information (we now highlight
individual format specifiers) and more precise wording in the
diagnostics.
llvm-svn: 94837
2010-01-29 20:55:36 +00:00
Mike Stump
0978af83b3
Insulate these from changes to the default for -Wunreachable-code.
...
llvm-svn: 94326
2010-01-23 20:12:18 +00:00
Fariborz Jahanian
935f041243
outside a method, 'super' should resolve in a normal name look up
...
to mimic gcc's behavior. Fixes radar 7400691.
llvm-svn: 94246
2010-01-22 23:04:44 +00:00
Fariborz Jahanian
4f8a57112f
Settled rule on warning on unimplemented property in
...
category implementation when some implementations
are missing in the primary class implementation.
(fixes radar 6505200).
llvm-svn: 94014
2010-01-20 19:36:21 +00:00
Fariborz Jahanian
98609b3a07
Patch to implement required warnings for unimplemented
...
properties imported frfom protocol. Fixes radar 7544809.
llvm-svn: 93965
2010-01-20 01:51:55 +00:00
Fariborz Jahanian
6d77a96111
objective-c test case for __attribute__((unused)) on method arguments.
...
llvm-svn: 93887
2010-01-19 18:39:17 +00:00
Fariborz Jahanian
c1d2fa5d48
Issue diagnostics (instead of crashing in code gen) when using
...
property dot-syntax notation to use setter/getters in objective-c.
Fixes radar 7553050.
llvm-svn: 93883
2010-01-19 17:48:02 +00:00
Fariborz Jahanian
6fada5be91
When in objective-c methods, do the built-in name lookup after
...
ivar name lookup. Fixes pr5986.
llvm-svn: 93271
2010-01-12 23:58:59 +00:00
Chris Lattner
f9895c48fd
add a bunch of missing prototypes to tests
...
llvm-svn: 93072
2010-01-09 20:43:19 +00:00
Douglas Gregor
6da83624e4
Whenever we emit a typo-correction diagnostic, also emit a note
...
pointing to the declaration that we found that has that name (if it is
unique).
llvm-svn: 92877
2010-01-07 00:17:44 +00:00
Douglas Gregor
10f1e4dda8
When suggesting a typo correction for an @implementation without a
...
corresponding @interface, provide a note showing which interface we're
referring to. This note has the fix-it hint on it.
Also, don't automatically apply fix-it hints for notes. They're meant
to express fix-its that would change semantics.
llvm-svn: 92870
2010-01-06 23:44:25 +00:00
Fariborz Jahanian
8e356bfe28
Fix a bug when property is redeclared in multiple
...
continuation classes and its original declaration
is imported from a protocol. This fixes radar 7509234.
llvm-svn: 92856
2010-01-06 21:38:30 +00:00