Argyrios Kyrtzidis
c0d4b00fee
[sema] Allow to opt-out of overriding the super class's designated initializers by marking the initializer as unavailable in the subclass.
...
rdar://20281322
llvm-svn: 243676
2015-07-30 19:06:04 +00:00
Fariborz Jahanian
20cfff3d31
revert r231700 (designated initializer patch) which broke
...
several projects. rdar://20120666.
llvm-svn: 231939
2015-03-11 16:59:48 +00:00
Fariborz Jahanian
29dec576e6
[PATCH Sema Objective-C]. Patch to warn on missing designated initializer
...
override where at least a declaration of a designated initializer is in a super
class and not necessarily in the current class. rdar://19653785.
llvm-svn: 231700
2015-03-09 20:39:51 +00:00
Ben Langmuir
c91ac9ed49
Fix crashes on missing @interface for category
...
In a few places we didn't check that Category->getClassInterface() was
not null before using it.
llvm-svn: 226605
2015-01-20 20:41:36 +00:00
Argyrios Kyrtzidis
37b7b2aefc
Rename "secondary initializer" -> "convenience initializer" in the warnings, which is a more correct and consistent term.
...
llvm-svn: 208142
2014-05-06 23:24:16 +00:00
Argyrios Kyrtzidis
357b36a2c0
[SemaObjC] Fix ObjCInterfaceDecl::inheritsDesignatedInitializers(), if there are no
...
designated initializers in the super class hierarchy then it should return false.
rdar://16692535
llvm-svn: 207332
2014-04-26 21:28:41 +00:00
Argyrios Kyrtzidis
de10366c06
[objc] -[NSObject init] is documented to not do anything, don't warn if subclasses do not call [super init] on their initializers.
...
Part of rdar://16568441
llvm-svn: 206410
2014-04-16 18:32:51 +00:00
Argyrios Kyrtzidis
441f626bd9
[objc] Consider new initializers inside @implementation when determining if the class
...
introduces new initializers.
Part of rdar://16568441
llvm-svn: 206409
2014-04-16 18:32:42 +00:00
Argyrios Kyrtzidis
6af9bc565e
[SemaObjC] For the semantics of the designated-initializer attribute, consider that the ObjC interface of the class
...
includes its class extensions.
This is follow-up for rdar://16305347
llvm-svn: 205065
2014-03-28 22:45:38 +00:00
Fariborz Jahanian
ba419ce21d
Objective-C. Consider blocks for designated initializer
...
warnings (warning or lack there of) as well since
blocks are another pattern for envoking other
designated initializers. // rdar://16323233
llvm-svn: 204081
2014-03-17 21:41:40 +00:00
Fariborz Jahanian
312104a716
Objective-C. Turn off designated initialization warnings on
...
'init' methods which are unavailable. Subclasses of NSObject
have to implement such methods as a common pattern to prevent
user's own implementation. // rdar://16305460
llvm-svn: 203966
2014-03-14 20:35:00 +00:00
Fariborz Jahanian
6efab6eed7
Objective-C. Allow objc_designated_initializer for private
...
initializers; but only those declared in class extensions
(not in implementations). // rdar://16305347
llvm-svn: 203954
2014-03-14 18:19:46 +00:00
Fariborz Jahanian
0c325319cf
Objective-C. Prevent an assertion crash due to buggy code
...
as it can commonly happen. // rdar://16261494
llvm-svn: 203598
2014-03-11 18:56:18 +00:00
Argyrios Kyrtzidis
0f7f222c59
[objc] Add a test to make sure that a class can add a secondary initializer via a category
...
and still inherit the designated initializers of its super class.
llvm-svn: 197301
2013-12-14 02:16:41 +00:00
Argyrios Kyrtzidis
d664a34de8
[objc] If we don't know for sure what the designated initializers of the superclass are,
...
assume that a [super init..] inside a designated initializer also refers to a designated one
and do not warn.
llvm-svn: 197202
2013-12-13 03:48:17 +00:00
Argyrios Kyrtzidis
e818681c88
Add a SubsetSubject in Attr.td to automate checking of where the objc_designated_initializer
...
attribute is acceptable.
llvm-svn: 196644
2013-12-07 06:08:04 +00:00
Argyrios Kyrtzidis
b9a405b33e
[objc] If an interface has no initializer marked as designated and introduces at least one new initializer,
...
don't assume that it inherits the designated initializers from the super class.
If the assumption was wrong because a new initializer was a designated one that was not marked as such,
we will emit misleading warnings for subclasses of the interface.
llvm-svn: 196476
2013-12-05 07:07:03 +00:00
Argyrios Kyrtzidis
db5ce0f71e
[objc] Add a warning when a class that provides a designated initializer, does not
...
override all of the designated initializers of its superclass.
llvm-svn: 196319
2013-12-03 21:11:54 +00:00
Argyrios Kyrtzidis
b66d3cf5cf
[objc] Emit warning when the implementation of a secondary initializer calls on
...
super another initializer and when the implementation does not delegate to
another initializer via a call on 'self'.
A secondary initializer is an initializer method not marked as a designated
initializer within a class that has at least one initializer marked as a
designated initializer.
llvm-svn: 196318
2013-12-03 21:11:49 +00:00
Argyrios Kyrtzidis
fcded9b93a
[objc] Emit warnings when the implementation of a designated initializer calls on
...
super an initializer that is not a designated one or any initializer on self.
llvm-svn: 196317
2013-12-03 21:11:43 +00:00
Argyrios Kyrtzidis
22bfa2c28b
[objc] Emit a warning when the implementation of a designated initializer does not chain to
...
an init method that is a designated initializer for the superclass.
llvm-svn: 196316
2013-12-03 21:11:36 +00:00
Argyrios Kyrtzidis
d1438b446e
[objc] Introduce attribute 'objc_designated_initializer'.
...
It only applies to methods of init family in an interface declaration.
llvm-svn: 196314
2013-12-03 21:11:25 +00:00